Como Extrair Dados do Indeed para Excel Usando Python e Automação Web

Como Extrair Dados do Indeed para Excel Usando Python e Automação Web

Acompanhar o histórico de oportunidades de trabalho e tendências de mercado ao longo de meses exige organização analítica. Fazer isso manualmente, copiando e colando registros de plataformas como o Indeed para planilhas, é um processo lento, suscetível a erros de digitação e incapaz de lidar com grandes volumes de dados.

A abordagem correta envolve construir um pipeline automatizado de extração com Python, capaz de navegar por páginas de resultados, normalizar as informações e consolidar um histórico confiável diretamente em formato Excel (.xlsx).


O Desafio Técnico na Extração de Vagas

Portais modernos de empregos contam com layouts dinâmicos, paginação orientada a parâmetros de URL e proteções contra requisições automatizadas abusivas. Para coletar centenas de registros abrangendo longos períodos de busca, a solução precisa lidar com:

  1. Variações de Seletores: O HTML de plataformas dinâmicas altera classes com frequência. Utilizar seletores CSS semânticos ou expressões regulares reduz quebras no script.
  2. Controle de Taxa (Rate Limiting): Requisições em massa sem pausas aleatórias resultam em bloqueio de IP. Uma fila de requisições bem espaçada preserva o acesso.
  3. Higienização de Dados: Campos como salários e datas de publicação vêm em formatos textuais despadronizados (ex: ‘Há 3 dias’, ‘R$ 5.000 a R$ 7.000 por mês’). O processamento deve converter esses textos em colunas estruturadas.

Arquitetura da Solução em Python

Para garantir escalabilidade e manutenção simples, dividimos a automação em três camadas: requisição/renderização, análise léxica (parsing) e persistência de dados.

Tecnologias Utilizadas

  • Playwright ou Requests + BeautifulSoup: Para simular sessões de navegação e extrair o DOM da página de busca.
  • Pandas: Para manipulação tabular, ordenação cronológica e deduplicação de anúncios idênticos.
  • OpenPyXL: Engine integrada ao Pandas para gravação e formatação de planilhas Excel.

Fluxo de Implementação Simplificado

python
import time
import random
import pandas as pd
from bs4 import BeautifulSoup
import requests

def extrairvagasindeed(query, localizacao, paginas=5):
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36’
}

registros = []

for pagina in range(paginas):
    start = pagina * 10
    url = f"https://br.indeed.com/jobs?q={query}&l={localizacao}&start={start}"

    resposta = requests.get(url, headers=headers)
    if resposta.status_code != 200:
        break

    soup = BeautifulSoup(resposta.text, 'html.parser')
    cards = soup.find_all('div', class_='job_seen_beacon')

    for card in cards:
        titulo_el = card.find('h2', class_='jobTitle')
        empresa_el = card.find('span', {'data-testid': 'company-name'})
        local_el = card.find('div', {'data-testid': 'text-location'})

        titulo = titulo_el.get_text(strip=True) if titulo_el else None
        empresa = empresa_el.get_text(strip=True) if empresa_el else None
        local = local_el.get_text(strip=True) if local_el else None

        if titulo:
            registros.append({
                'Cargo': titulo,
                'Empresa': empresa,
                'Localização': local,
                'Data_Coleta': pd.Timestamp.now().strftime('%Y-%m-%d')
            })

    time.sleep(random.uniform(1.5, 3.5))

return pd.DataFrame(registros)

Execução e Exportação

dfvagas = extrairvagas_indeed(‘Python Developer’, ‘Brasil’, paginas=3)

Deduplicação e Exportação para Excel

dfvagas.dropduplicates(subset=[‘Cargo’, ‘Empresa’], inplace=True)
dfvagas.toexcel(‘historicovagasindeed.xlsx’, index=False, engine=’openpyxl’)


Tratamento de Históricos Prolongados

Como especialista em IA e engenharia de dados, recomendo que projetos de análise com escopo temporal longo (como compilar 6 meses de atividade) não dependam apenas de execuções pontuais. É fundamental estruturar um banco intermediário leve (SQLite ou PostgreSQL) ou consolidar arquivos incrementais periódicos. Dessa forma, é possível acompanhar a evolução salarial, cargos mais recorrentes e taxas de rotatividade de contratações no nicho estudado.


Conclusão e Próximos Passos

Transformar buscas dispersas na web em bases acionáveis no Excel fornece uma vantagem estratégica clara para análises de mercado de trabalho e tomadas de decisão fundamentadas em métricas reais.

Se a sua operação necessita de pipelines personalizados de coleta, automação de dados web ou tratamento analítico avançado em larga escala, entre em contato para uma consultoria técnica especializada e descubra como implementar soluções seguras e sob medida.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.