Ei! Quer extrair listas de empregos do Even? Você veio ao lugar certo.
O Even é um dos maiores mecanismos de busca de empregos na web, com mais de 250 milhões visitantes únicos por mês. É um enorme conjunto de dados sobre ofertas de emprego, salários, perfis de empresas e muito mais.
Infelizmente, as APIs do Even não expõem totalmente todos esses dados. É aí que entra o web scraping.
Neste guia, orientarei você passo a passo sobre como raspar o Even usando Python. Compartilharei trechos de código que você pode usar, junto com dicas para raspar com precisão e evitar ser bloqueado.
Também abordarei como automatizar a raspagem para execução diária, semanal ou mensal. Dessa forma, você pode manter os dados da sua lista de empregos atualizados automaticamente!
No final, você estará aproveitando as ofertas de emprego do Even como um profissional. Vamos cavar!
Por que raspar listas de empregos de fato?
Antes de sujarmos as mãos com algum código Python, vamos falar sobre porque você pode querer extrair dados do Even em primeiro lugar.
Aqui estão apenas algumas idéias:
Pesquisa de mercado – Analise as tendências de anúncios de emprego para identificar habilidades ou funções crescentes em demanda. Na verdade, tem dados sobre milhões de aberturas em todos os setores.
Inteligencia competitiva – Veja quais salários e benefícios as empresas estão oferecendo para funções semelhantes. Útil ao avaliar seus próprios pacotes de remuneração.
Motores de busca de emprego – Crie painéis de empregos personalizados usando dados do Even filtrados para palavras-chave ou locais específicos.
Ferramentas de recrutamento – Rastreie novas vagas que correspondam às habilidades dos candidatos para revelar empregos relevantes.
Análise de currículo – Extraia palavras-chave e habilidades das descrições de cargos para fornecer sugestões para melhorar currículos e cartas de apresentação.
Esses são apenas alguns exemplos – com dados estruturados ricos sobre ofertas de emprego, as possibilidades são infinitas!
Agora vamos ver como realmente extrair esses dados usando web scraping.
É legal raspar de fato?
Antes de mergulhar na codificação, quero abordar rapidamente a legalidade do web scraping. Eu sei que algumas pessoas têm preocupações aqui.
A resposta curta é: extrair dados públicos do Even é perfeitamente legal na maioria dos casos, desde que você siga algumas regras básicas:
Acesse apenas páginas públicas – não tente extrair dados ou logins privados de usuários.
Não sobrecarregue os servidores do Even fazendo scraping de forma muito agressiva. Siga práticas educadas de rastreamento.
Cumpra os Termos de Serviço do Even. Eles não proíbem especificamente o web scraping.
Evite copiar grandes trechos de texto literalmente para respeitar os direitos autorais. Parafrasear está ok.
Não republice quaisquer dados privados, pessoais ou confidenciais extraídos.
Se você seguir essas diretrizes de bom senso, o web scraping Even para dados públicos de listas de empregos é legalmente permitido na maioria dos países.
Claro, eu ainda recomendo consultar um advogado se você tiver alguma dúvida, pois as leis variam. Mas você pode superar o Even com confiança, desde que permaneça ético!
Ok, vamos mergulhar na parte divertida – código real!
Raspando listagens do Even com Python
Ao copiar sites grandes como o Even, Python é uma ótima escolha graças a bibliotecas como pedidos, Sopa linda e Selênio.
Vou orientá-lo em um script para:
Extraia listas de empregos que correspondam a pesquisas de palavras-chave e localização
Analise detalhes como cargos, salários e descrições
Automatize a paginação para buscar todas as listagens em várias páginas
Vamos começar!
Bibliotecas de importação
Nós usaremos pedidos para buscar páginas, Sopa linda para análise, Horário para acelerar, e Pandas para armazenar dados:
import requests
from bs4 import BeautifulSoup
import time
import pandas as pd
Pedidos e BeautifulSoup são todos vocês clientes precisar. Mas o Pandas ajuda a gerenciar os dados, enquanto o Time limita as solicitações.
Definir parâmetros de pesquisa
Primeiro, vamos definir quais anúncios de empregos queremos. Especifique palavras-chave, localização e outros filtros:
keywords = "Remote Software Engineer"
location = "United States"
salary_min = 100000
O objetivo é empregos remotos de software com altos salários nos EUA. Ajuste aos critérios desejados.
Buscar página de resultados de pesquisa
Com os parâmetros definidos, solicitaremos a URL, passando nossas palavras-chave e localização:
BASE_URL = "https://www.indeed.com/jobs?"
params = {
‘q‘: keywords,
‘l‘: location,
‘minSalary‘: salary_min,
‘remotejob‘: ‘remote‘ # Filter remote jobs
}
print(f‘Fetching job listings for {keywords} in {location}...‘)
res = requests.get(BASE_URL, params=params)
res.raise_for_status() # Raise exception for 4xx/5xx
Isso realiza a consulta de pesquisa inicial, filtrando por nossas palavras-chave e parâmetros.
Analisar resultados com BeautifulSoup
A seguir, analisaremos o HTML da página de resultados de pesquisa para extrair dados de listagem de alto nível:
soup = BeautifulSoup(res.text, ‘html.parser‘)
listings = [] # List to store listings
for div in soup.find_all(‘div‘, class_=‘job_seen_beacon‘):
title = div.find(‘h2‘).text.strip()
company = div.find(‘span‘, class_=‘companyName‘).text.strip()
location = div.find(‘div‘, class_=‘companyLocation‘).text.strip()
# Append listing data
listings.append({
‘title‘: title,
‘company‘: company,
‘location‘: location
})
Aqui localizamos cada listagem div
, pegue os campos-chave como título e empresa e armazene em nosso listings
Lista.
Lidar com paginação
Na verdade, divide os resultados em várias páginas. Precisaremos iterar cada um:
# Track page number
current_page = 0
while True:
# Increment page
current_page += 1
print(f‘Scraping page {current_page}...‘)
# Build URL for next page
next_page_url = BASE_URL + f‘&start={current_page*10}‘
# Fetch page HTML
res = requests.get(next_page_url, params=params)
# Parse HTML
soup = BeautifulSoup(res.text, ‘html.parser‘)
# Return if last page
if not soup.find(‘a‘, {‘aria-label‘: ‘Next‘}):
print(‘Reached last page!‘)
break
# Extract listings
for div in soup.find_all(...):
# Extract listing data
# Sleep to throttle requests
time.sleep(3)
print(f‘Scraped {len(listings)} listings‘)
Aqui, incrementamos continuamente o número da página, buscamos a próxima página, extraímos as listagens e fazemos um loop até chegar à última página.
Adicionando um curta time.sleep()
o acelerador ajuda a evitar sobrecarregar os servidores do Even.
Detalhes da listagem de raspagem
Até agora extraímos dados de alto nível, como títulos e empresas. Para obter detalhes como salários e descrições, coletaremos o URL de cada listagem:
from selenium import webdriver
driver = webdriver.Chrome()
# Loop through listings
for listing in listings:
print(f‘Getting details for {listing["title"]}‘)
# Load listing URL
url = listing[‘url‘]
driver.get(url)
# Extract key fields
desc = driver.find_element_by_id(‘jobDescriptionText‘).text
salary = driver.find_element_by_class_name(‘salary-snippet‘).text
listing[‘desc‘] = desc
listing[‘salary‘] = salary
# Sleep to throttle
time.sleep(2)
driver.quit()
Aqui, o Selenium fornece um navegador completo para renderizar páginas com muito JavaScript. Carregamos cada URL e extraímos campos adicionais como descrição e salário.
Dica Pro: Considere usar um serviço de proxy para evitar bloqueios de IP ao usar o Selenium em escala.
E é isso! Com essas etapas, você pode obter milhares de listas de empregos do Even automaticamente.
O resultado final são dados de trabalho estruturados que você pode analisar ou exportar para ferramentas como o Excel. Vejamos alguns exemplos a seguir.
O que você pode fazer com dados extraídos do Even?
Agora que podemos extrair as listagens do Even, o que podemos realmente fazer com esses dados?
Aqui estão apenas algumas idéias:
Exportar para Excel para análise
df = pandas.DataFrame(listings)
df.to_excel(‘indeed_listings.xlsx‘, index=False)
O Pandas facilita a exportação de resultados para Excel. Isso permite filtragem poderosa, tabelas dinâmicas e fórmulas.
Você pode analisar tendências em locais, salários, habilidades e muito mais.
Crie bancos de dados de busca de empregos
import sqlite3
# Connect to SQLite database
conn = sqlite3.connect(‘jobs.db‘)
# Create table
conn.execute(‘‘‘
CREATE TABLE jobs (
title TEXT,
company TEXT,
description TEXT,
salary REAL
);
‘‘‘)
# Insert listings into database
for listing in listings:
conn.execute("""
INSERT INTO jobs VALUES (
?, ?, ?, ?
)""", (listing[‘title‘], listing[‘company‘],
listing[‘desc‘], listing[‘salary‘]))
conn.commit()
conn.close()
SQLite fornece um banco de dados simples para armazenar listagens para pesquisa personalizada. Integre-se ao Flask para construir seu próprio quadro de empregos!
Listagens relevantes por e-mail para candidatos
import smtplib
from email.message import EmailMessage
# Connect to SMTP server
smtp = smtplib.SMTP(‘smtp.domain.com‘)
for listing in listings:
# Check if listing matches candidate skills
if match:
msg = EmailMessage()
msg[‘Subject‘] = f‘New job for you - {listing["title"]}‘
msg[‘From‘] = ‘[email protected]‘
msg[‘To‘] = ‘[email protected]‘
msg.set_content(listing[‘desc‘])
# Send listing to candidate
smtp.send_message(msg)
smtp.quit()
O Python torna mais fácil enviar automaticamente por e-mail aos candidatos novas listagens que correspondam às suas habilidades e interesses.
Esta é apenas uma pequena amostra – com dados de milhões de listagens, as possibilidades são infinitas!
Agora vamos ver como executar esse raspador automaticamente.
Agendando raspagens diárias de fato
Embora raspar o Even em tempo real seja útil, ainda mais valioso é configurar raspagens automatizadas e programadas para manter seus dados atualizados.
Aqui estão duas boas opções para executar o scraper em uma programação recorrente fixa:
cron Jobs
Uma maneira simples de automatizar scripts Python é o cron, um utilitário padrão do Linux.
Adicione uma entrada como esta para ser executada diariamente às 8h:
0 8 * * * python /home/user/indeedScraper.py
Você pode agendar recorrências complexas. Mas o cron não possui relatórios se os arranhões falharem.
Plataformas de raspagem
Para agendamento e automação mais robustos, recomendo usar uma plataforma de scraping dedicada como Escamoso or Apificar.
Eles fornecem automação de navegador e proxy para lidar com CAPTCHAs, blocos e JavaScript. E eles têm agendamento fácil de cron jobs integrado.
Você também recebe alertas por e-mail, análises de desempenho e opções de integração. Eles realmente eliminam a dor de cabeça da automação!
Aqui está uma comparação rápida:
cron Jobs | Plataformas de raspagem | |
---|---|---|
Preços | Gratuito | Planos pagos |
Proxies e navegadores sem cabeça | Precisa de código personalizado | Recursos incluídos |
Scheduler | Recorrência básica | opções avançadas |
Monitoramento e alertas | nenhum | E-mails e painel |
Armazenamento de resultados | Manuseio manual | Armazenamento e exportações integrados |
Para sites grandes e complexos como o Even, recomendo usar uma plataforma dedicada. A confiabilidade e os recursos adicionais compensam o custo ao fazer scraping em escala.
Vamos recapitular
Neste guia você aprendeu:
Sua marca scraping Even é útil para pesquisas de mercado, busca de emprego e ferramentas de recrutamento.
Como extrair listagens imitando consultas de pesquisa em Python.
Melhores práticas como limitar solicitações e usar proxies para evitar bloqueios.
Como analisar detalhes como salários e descrições das páginas de listagem.
Opções de automação como cron e plataformas de scraping dedicadas para manter seus dados atualizados.
Os exemplos de código acima devem fornecer um modelo para começar a extrair seus próprios dados do Even. Sinta-se à vontade para ajustá-lo e desenvolvê-lo de acordo com seu caso de uso!
Apenas lembre-se de respeitar os Termos de Serviço do Even, evitar raspagem muito agressiva e seguir uma boa higiene de raspagem na web para permanecer no lado certo da lei.
Espero que este guia tenha lhe dado uma visão geral abrangente de como raspar o Even de maneira eficaz usando Python. Automatizar essas etapas permite que você aproveite o incrível acervo de dados de listas de empregos do Even.
Deixe-me saber se você tem alguma dúvida! Fico sempre feliz em conversar mais sobre as práticas recomendadas de web scraping.
Boa sorte com seu projeto de raspagem do Even!