gohorsejobs/job-scraper-multisite
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
..
output feat: SEO optimization and dynamic jobs API integration 2025-12-14 09:16:44 -03:00
scrapers feat: SEO optimization and dynamic jobs API integration 2025-12-14 09:16:44 -03:00
main_scraper.py feat: SEO optimization and dynamic jobs API integration 2025-12-14 09:16:44 -03:00
README.md feat: SEO optimization and dynamic jobs API integration 2025-12-14 09:16:44 -03:00
requirements.txt feat: SEO optimization and dynamic jobs API integration 2025-12-14 09:16:44 -03:00

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