gohorsejobs/job-scraper-multisite/README.md
Tiago Yamamoto a4abcf8e05 feat: SEO optimization and dynamic jobs API integration
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
2025-12-14 09:16:44 -03:00

86 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🐴 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.