Backend: - Add Swagger annotations to all job handlers (GET, POST, PUT, DELETE) - Clean up job handler code Frontend: - Expand api.ts with ApiJob types, pagination, and transform function - Update footer with 'Vagas por Tecnologia' SEO links - Add robots.txt with crawler directives - Add sitemap.xml with main pages and job URLs - Change branding to GoHorse Jobs
2.3 KiB
2.3 KiB
🐴 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
# 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
# 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 recentevagas_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
- Crie um novo arquivo em
scrapers/(ex:novosite_scraper.py) - Implemente a função
scrape_novosite()seguindo o padrão existente - Adicione ao dicionário
SITESemmain_scraper.py:
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.txtde cada site - ✅ Considere usar proxies para grandes volumes
📝 Licença
Uso educacional. Respeite os Termos de Serviço de cada site.