Um projeto que automatiza a raspagem de dados de vagas de emprego no site InfoJobs, 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
.
selenium
: Automação de navegadorbs4 (BeautifulSoup)
: Extração de dados HTMLpandas
: Manipulação de dadoscsv
: Escrita de arquivos CSVlogging
: Log de eventos
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.
_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.
- Preenchimento de campos de busca
- Busca e clique na cidade
- Clique no botão de buscar
Todos os elementos são localizados usando
XPATH
ouCSS Selectors
, comWebDriverWait
para sincronização dinâmica da página.
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.
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.
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.
- Python 3.8+
- Google Chrome instalado
- Driver compatível com sua versão do Chrome (e adicionado ao PATH)
pip install selenium beautifulsoup4 pandas
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...