https://github.com/robsonraphael/scraping-leads-info
um script que busca e raspar dados de vagas de emprego do website [InfoJobs], pegando as características mais importantes da vaga e armazenando em um arquivo csv.
https://github.com/robsonraphael/scraping-leads-info
bs4 pandas python scraping selenium
Last synced: 10 months ago
JSON representation
um script que busca e raspar dados de vagas de emprego do website [InfoJobs], pegando as características mais importantes da vaga e armazenando em um arquivo csv.
- Host: GitHub
- URL: https://github.com/robsonraphael/scraping-leads-info
- Owner: robsonraphael
- Created: 2025-08-17T16:23:26.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-03T23:58:31.000Z (10 months ago)
- Last Synced: 2025-09-04T01:21:21.293Z (10 months ago)
- Topics: bs4, pandas, python, scraping, selenium
- Language: Python
- Homepage:
- Size: 101 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 📄 Raspagem de dados de vagas de emprego
Um projeto que automatiza a raspagem de dados de vagas de emprego no site [InfoJobs](https://www.infojobs.com.br/), coletando informações como título da vaga, empresa, local, salário, tipo de contratação e descrição, e salva os dados em um arquivo `.csv`.
---
## 🛠️ Tecnologias e Bibliotecas Utilizadas
* `selenium`: Automação de navegador
* `bs4 (BeautifulSoup)`: Extração de dados HTML
* `pandas`: Manipulação de dados
* `csv`: Escrita de arquivos CSV
* `logging`: Log de eventos
---
## 🗂️ Estrutura Geral do Código
### 1. **Configuração do Navegador**
```python
chrome_services = Service()
chrome_options = Options()
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--blink-settings=imagesEnabled=false')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_argument('user-agent=...')
driver = webdriver.Chrome(service=chrome_services, options=chrome_options)
```
> ⚙️ O navegador é configurado para rodar em **modo headless** (sem interface) e minimizar detecção de automação.
---
### 2. **Parâmetros de Busca**
```python
_vaga = 'Promotor Vendas'
_cidade = 'Recife - PE'
url = "https://www.infojobs.com.br/empregos-em-sao-paulo.aspx"
```
> Estes são os filtros de busca para a raspagem. Você pode alterar para qualquer vaga e cidade do Brasil.
---
### 3. **Interações com a Página**
* **Preenchimento de campos de busca**
* **Busca e clique na cidade**
* **Clique no botão de buscar**
> Todos os elementos são localizados usando `XPATH` ou `CSS Selectors`, com `WebDriverWait` para sincronização dinâmica da página.
---
### 4. **Scroll da Página**
```python
def scroll(driver, pausa: float, max_scroll: int=10)
```
> Executa o scroll da página até o final para carregar todas as vagas disponíveis dinamicamente.
---
### 5. **Extração dos Dados das Vagas**
```python
def achar_vagas() -> list[dict]
```
Esta função percorre todos os cards de vaga e extrai os seguintes campos:
* **VAGA**: Nome da vaga
* **EMPRESA**: Nome da empresa
* **LOCAL**: Local de trabalho
* **SALARIO**: Faixa salarial (se disponível)
* **TIPO**: Tipo da vaga (Home office, presencial)
* **DESCRIÇÃO**: Descrição da vaga
* **LINK\_VAGA**: Link direto para a vaga
* **LINK\_EMPRESA**: Link para o perfil da empresa (se houver)
> Obs: A função também clica dinamicamente em cada card para abrir o painel lateral com detalhes da vaga.
---
### 6. **Salva em CSV**
```python
data.to_csv(
f"vaga-{_vaga}-{_cidade}-{datetime.today().date()}.csv",
index=False,
encoding='utf-8-sig',
sep=';',
)
```
> Os dados coletados são salvos em um arquivo `.csv` com nome baseado nos parâmetros da busca.
---
## ✅ Requisitos para Execução
* Python 3.8+
* Google Chrome instalado
* Driver compatível com sua versão do Chrome (e adicionado ao PATH)
### Instalação de dependências:
```bash
pip install selenium beautifulsoup4 pandas
```
---
## 📎 Exemplo de Saída CSV
```csv
ID;VAGA;EMPRESA;LOCAL;SALARIO;TIPO;DESCRICAO;LINK_VAGA;LINK_EMPRESA
1;Promotor de Vendas;Empresa ABC;Recife - PE;R$ 1.800,00;CLT;"Atividades de promoção...";https://infojobs...;https://infojobs...
```