# 🐴 JobScraper MultiSite Raspador de vagas de emprego multi-plataforma para sites de tecnologia brasileiros. ## 📁 Estrutura do Projeto ``` JobScraper_MultiSite/ ├── main_scraper.py # Arquivo principal ├── scrapers/ # Módulos de raspagem por site │ ├── __init__.py │ ├── programathor_scraper.py │ └── geekhunter_scraper.py ├── output/ # Arquivos CSV gerados │ └── vagas_consolidadas.csv ├── requirements.txt └── README.md ``` ## 🚀 Instalação ```bash # Criar ambiente virtual (recomendado) python -m venv venv source venv/bin/activate # Linux/Mac # ou: venv\Scripts\activate # Windows # Instalar dependências pip install -r requirements.txt # Ou instalar manualmente: pip install requests beautifulsoup4 pandas ``` ## ▶️ Execução ```bash # Executar raspagem de todos os sites python main_scraper.py # Testar um scraper individual python -m scrapers.programathor_scraper ``` ## 📊 Output Os resultados são salvos na pasta `output/`: - `vagas_consolidadas.csv` - Versão mais recente - `vagas_consolidadas_YYYYMMDD_HHMMSS.csv` - Versões com timestamp ### Campos extraídos: | Campo | Descrição | |-------------|------------------------------| | titulo | Título da vaga | | empresa | Nome da empresa | | localizacao | Localização/Modalidade | | link | URL da vaga | | fonte | Site de origem | ## ➕ Adicionando Novos Sites 1. Crie um novo arquivo em `scrapers/` (ex: `novosite_scraper.py`) 2. Implemente a função `scrape_novosite()` seguindo o padrão existente 3. Adicione ao dicionário `SITES` em `main_scraper.py`: ```python from scrapers.novosite_scraper import scrape_novosite SITES = { 'programathor': scrape_programathor, 'geekhunter': scrape_geekhunter, 'novosite': scrape_novosite, # Novo! } ``` ## ⚠️ Boas Práticas Anti-Bloqueio - ✅ Sempre use `time.sleep()` entre requisições (mínimo 2s) - ✅ Use headers que simulem um navegador real - ✅ Não faça muitas requisições em sequência rápida - ✅ Respeite o `robots.txt` de cada site - ✅ Considere usar proxies para grandes volumes ## 📝 Licença Uso educacional. Respeite os Termos de Serviço de cada site.