Embarcar na jornada de aventura do rastreamento da web pode ser emocionante e desafiador, pois navegamos pelos becos labirínticos da Internet em busca de dados valiosos. No vasto universo digital, a arte de rastrear a web emergiu como uma habilidade crítica, permitindo-nos extrair informações de forma eficiente, desenvolver insights e dar sentido à rede mundial de computadores em constante expansão.
Neste artigo esclarecedor, percorreremos o intrincado terreno do rastreamento da web, descobrindo as diferenças entre o rastreamento da web e o web scraping enquanto exploramos uma série de estratégias e tecnologias que irão elevar sua habilidade de rastreamento da web.
Do domínio dinâmico dos sites JavaScript à poderosa simplicidade do Python, guiaremos você por uma infinidade de dicas e técnicas para garantir que sua expedição de rastreamento na web seja tranquila, eficaz e desimpedida.
Índice
Então, aperte o cinto e prepare-se para embarcar em uma viagem emocionante ao cativante mundo do rastreamento na web!
Rastreamento da Web vs. Web Scraping
Embora web scraping e web crawling sejam frequentemente considerados a mesma coisa, e ambos sejam usados para mineração de dados, eles têm diferenças importantes. Exploraremos essas diferenças e ajudaremos você a determinar qual abordagem melhor atende às suas necessidades e objetivos de negócios.
Principais diferenças
Simplificando, o rastreamento da web é o que os mecanismos de pesquisa fazem: eles navegam na web, buscando qualquer informação disponível e seguindo todos os links acessíveis. Este processo geral visa reunir o máximo de informações possível (ou mesmo todas) de um determinado site. Essencialmente, é isso que o Google faz – visualiza toda a página da web e indexa todos os dados disponíveis.
Por outro lado, web scraping é empregado quando você deseja baixar as informações coletadas. Web scraping (também conhecido como extração de dados da web) é um processo mais focado. Ao personalizar comandos e utilizar proxies de raspagem, você pode extrair dados específicos do site de destino. Posteriormente, você pode baixar os resultados em um formato adequado, como JSON ou Excel.
Em alguns casos, tanto o rastreamento quanto o web scraping podem ser usados para atingir um único objetivo, funcionando essencialmente como as etapas um e dois do seu processo. Ao combinar os dois, você pode coletar grandes quantidades de informações dos principais sites usando um rastreador e posteriormente extrair e baixar os dados específicos necessários com um raspador.
4 estratégias de rastreamento da Web
Em geral, os rastreadores da Web visitam apenas uma parte das páginas da Web com base no orçamento do rastreador, que pode ser determinado por fatores como o número máximo de páginas por domínio, profundidade ou duração.
Muitos sites oferecem um arquivo robots.txt que especifica quais partes do site podem ser rastreadas e quais estão fora dos limites. Além disso, existe o sitemap.xml, que é mais detalhado que o robots.txt, orientando os bots sobre quais caminhos rastrear e fornecendo metadados extras para cada URL.
Os usos comuns para rastreadores da web incluem:
- Mecanismos de busca como Googlebot, Bingbot e Yandex Bot coletam HTML de uma parte substancial da web, indexando os dados para torná-los facilmente pesquisáveis.
- As ferramentas de análise de SEO coletam não apenas HTML, mas também metadados, como tempo de resposta e status de resposta, para identificar páginas quebradas e rastrear links entre domínios para análise de backlinks.
- As ferramentas de monitoramento de preços rastreiam sites de comércio eletrônico para localizar páginas de produtos e extrair metadados, principalmente preços. Essas páginas de produtos são revisitadas periodicamente.
- O rastreamento comum mantém um repositório público de dados de rastreamento da web, como o Arquivo de maio de 2022 contendo 3,45 bilhões de páginas da web.
Como rastrear sites JavaScript
O rastreamento de sites JavaScript pode ser mais desafiador do que o rastreamento de páginas HTML estáticas porque o conteúdo geralmente é carregado e manipulado pelo código JavaScript. Para rastrear esses sites, você precisa usar um navegador sem cabeça que possa executar JavaScript e renderizar o conteúdo da página. Uma escolha popular para esta tarefa é a combinação da biblioteca Puppeteer e do ambiente de execução Node.js.
Aqui está um guia passo a passo para rastrear sites JavaScript usando Puppeteer e Node.js:
1. Instale o Node.js.
Baixe e instale a versão mais recente do Node.js do site oficial (https://nodejs.org/).
2. Crie um novo diretório de projeto
Crie um novo diretório para o seu projeto e navegue até ele usando a linha de comando.
mkdir js-crawler
cd js-crawler
3. Inicialize um novo projeto Node.js.
Execute o seguinte comando no diretório do seu projeto para criar um novo package.json
arquivo com as configurações padrão.
npm init -y
4. Instale o titereiro
Instale o Puppeteer executando o seguinte comando no diretório do seu projeto
npm install puppeteer
5. Crie um novo arquivo JavaScript
Crie um novo arquivo chamado
crawler.js
no diretório do seu projeto, que conterá o código para rastrear o site JavaScript.
6. Escreva o código do rastreador
Abrir
crawler.js
e adicione o seguinte código:
const puppeteer = require('puppeteer');
async function crawlJavaScriptWebsite(url) {
Inicie uma nova instância do navegador
const browser = await puppeteer.launch({ headless: true });
Crie uma nova página no navegador
const page = await browser.newPage();
Navegue até o URL de destino
await page.goto(url, { waitUntil: 'networkidle2' })
Extraia dados da página usando
evaluate()
const data = await page.evaluate(() => {
Escreva seu código JavaScript personalizado aqui para extrair os dados necessários. Por exemplo, vamos extrair todos os títulos (elementos h1) da página.
const headings = Array.from(document.querySelectorAll('h1')).map(heading => heading.textContent);
return {
headings,
};
});
Feche o navegador
await browser.close();
Retorne os dados extraídos
return data;
}
Exemplo de uso:
crawlJavaScriptWebsite('https://example.com/')
.then(data => console.log(data))
.catch(err => console.error(err));
Substitua o
https://example.com/
URL pelo URL do site de destino e personalize o
page.evaluate()
função para extrair os dados que você precisa.
7. Execute o rastreador
Execute o seguinte comando no diretório do seu projeto para executar o rastreador:
node crawler.js
O script iniciará um navegador headless, navegará até o URL de destino e executará o código JavaScript especificado no
page.evaluate()
função. Os dados extraídos serão registrados no console.
Lembre-se de que este é um exemplo básico de rastreamento de um site JavaScript. Para casos de uso mais avançados, pode ser necessário interagir com a página, lidar com solicitações AJAX, rolar a página ou lidar com CAPTCHAs e cookies.
Como rastrear a web com Python
Rastrear um site com Python envolve buscar páginas da web, analisar seu conteúdo e seguir links para outras páginas. Neste guia, usaremos duas bibliotecas Python populares: Requests e Beautiful Soup. Este guia pressupõe que você tenha o Python instalado e um conhecimento básico de programação Python.
Etapa 1: instale as bibliotecas necessárias
Instale as bibliotecas Requests e Beautiful Soup usando pip:
pip install requests beautifulsoup4
Passo 2: Importe as bibliotecas
Importe as bibliotecas necessárias em seu script Python:
import requests
from bs4 import BeautifulSoup
Etapa 3: crie uma função para buscar o conteúdo da página da web
Crie uma função para buscar o conteúdo da página web usando a biblioteca Requests:
def fetch_page(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
print(f"Failed to fetch {url} (status code {response.status_code})")
return None
Etapa 4: crie uma função para analisar o conteúdo da página da web
Crie uma função para analisar o conteúdo da página da web usando a biblioteca Beautiful Soup:
def parse_page(html):
soup = BeautifulSoup(html, "html.parser")
return soup
Etapa 5: crie uma função para extrair links do conteúdo analisado
Crie uma função para extrair todos os links do conteúdo da página analisada:
def extract_links(soup, base_url):
links = []
for a_tag in soup.find_all("a"):
href = a_tag.get("href")
if href and not href.startswith("#"):
if not href.startswith("http"):
href = base_url + href
links.append(href)
return links
Etapa 6: crie uma função para rastrear o site
Crie uma função para rastrear o site recursivamente:
def crawl_website(url, max_depth=2, depth=0):
if depth > max_depth:
return
html = fetch_page(url)
if not html:
return
soup = parse_page(html)
links = extract_links(soup, url)
print(f"{' ' * depth}[{depth}] {url}")
for link in links:
crawl_website(link, max_depth, depth + 1)
Etapa 7: execute o rastreador
Execute o rastreador chamando o método
crawl_website
função com o URL desejado e profundidade máxima:
if __name__ == "__main__":
start_url = "https://example.com/"
max_depth = 2
crawl_website(start_url, max_depth)
Este guia passo a passo mostra como rastrear um site usando Python. Você pode personalizar o
crawl_website
função para lidar com estruturas específicas de sites, adicionar lógica para armazenar as informações extraídas ou implementar recursos de rastreamento mais avançados, como manipulação de robots.txt, limitação de taxa ou paralelização de solicitações.
12 dicas sobre como rastrear um site sem ser bloqueado
Estas são as principais estratégias para rastrear a web sem encontrar bloqueios:
#1: Verifique o protocolo de exclusão de robôs
Antes de rastrear ou copiar um site, certifique-se de que seu alvo permite a coleta de dados de sua página. Inspecione o arquivo do protocolo de exclusão de robôs do site (robots.txt) e siga os regulamentos do site.
Mesmo que o site permita rastreamento, seja respeitoso e não danifique o site. Cumpra os regulamentos especificados no protocolo de exclusão de robôs, rastreie fora dos horários de pico, limite as solicitações originadas de um único endereço IP e estabeleça um atraso entre as solicitações.
No entanto, mesmo que o site permita web scraping, você ainda poderá encontrar bloqueios, por isso é essencial seguir etapas adicionais também. Para obter um guia mais abrangente, consulte nosso tutorial Python de web scraping.
#2: Utilize um servidor proxy
O rastreamento da Web seria quase impossível sem proxies. Escolha um provedor de serviços de proxy confiável e selecione entre datacenter e proxies IP residenciais com base em sua tarefa.
Usar um intermediário entre o seu dispositivo e o site de destino diminui os bloqueios de endereços IP, garante o anonimato e permite acessar sites que podem estar indisponíveis na sua região. Por exemplo, se você estiver na Alemanha, pode ser necessário utilizar um proxy dos EUA para acessar o conteúdo da web nos Estados Unidos.
Para obter os melhores resultados, escolha um provedor de proxy com um grande pool de IP e uma ampla variedade de locais.
#3: Rotação de endereços IP
Ao empregar um pool de proxy, é crucial alternar seus endereços IP.
Se você enviar muitas solicitações do mesmo endereço IP, o site de destino logo o reconhecerá como uma ameaça e bloqueará seu endereço IP. A rotação de proxy permite que você pareça ser vários usuários diferentes da Internet e reduz a probabilidade de ser bloqueado.
Todos os proxies residenciais da Oxylabs alternam IPs, mas se você estiver usando proxies de datacenter, deverá usar um serviço rotador de proxy. Também alternamos proxies IPv6 e IPv4. Se você estiver interessado nas diferenças entre IPv4 e IPv6, leia o artigo escrito pela minha colega Iveta.
#4: Use agentes de usuário reais
A maioria dos servidores que hospedam sites pode examinar os cabeçalhos da solicitação HTTP gerada pelos bots de rastreamento. Este cabeçalho de solicitação HTTP, denominado agente do usuário, contém diversas informações que vão desde o sistema operacional e software até o tipo de aplicativo e sua versão.
Os servidores podem detectar facilmente agentes de usuários suspeitos. Os agentes de usuário reais contêm configurações de solicitação HTTP populares enviadas por visitantes orgânicos. Para evitar ser bloqueado, certifique-se de personalizar seu agente de usuário para se parecer com um agente orgânico.
Como cada solicitação feita por um navegador da Web contém um agente de usuário, você deve alternar frequentemente o agente de usuário.
Também é fundamental utilizar agentes de usuário atualizados e mais populares. Se você estiver fazendo solicitações a um agente de usuário de cinco anos de uma versão não suportada do Firefox, isso levantará muitos sinais de alerta. Você pode encontrar bancos de dados públicos na Internet que mostram quais agentes de usuário são os mais populares atualmente. Também temos nosso próprio banco de dados atualizado regularmente, portanto, entre em contato conosco se precisar de acesso a ele.
#5: Defina sua impressão digital corretamente
Os mecanismos anti-raspagem estão se tornando mais sofisticados e alguns sites usam o Protocolo de Controle de Transmissão (TCP) ou impressão digital de IP para detectar bots.
Ao raspar a web, o TCP deixa vários parâmetros. Esses parâmetros são estabelecidos pelo sistema operacional ou dispositivo do usuário final. Se você está se perguntando como evitar entrar na lista negra durante a raspagem, certifique-se de que seus parâmetros sejam consistentes. Alternativamente, você pode usar o Web Unblocker – uma solução de proxy alimentada por IA com funcionalidade de impressão digital dinâmica. O Web Unblocker combina muitas variáveis de impressão digital de uma forma que, mesmo quando identifica uma única impressão digital que funciona melhor, as impressões digitais ainda são aparentemente aleatórias e podem passar nas verificações anti-bot.
#6: Cuidado contra armadilhas Honeypot
Tenha cuidado com armadilhas de honeypot, que são links em código HTML que podem ser detectados por web scrapers, mas são invisíveis para usuários orgânicos. Essas armadilhas são usadas para identificar e bloquear rastreadores da web, pois somente robôs seguiriam esses links. Embora a configuração de honeypots exija muito trabalho, alguns alvos podem usá-los para detectar rastreadores da web, portanto, tome cuidado se sua solicitação for bloqueada e um rastreador for detectado.
#7: Utilize serviços de solução CAPTCHA
Os CAPTCHAs representam um grande desafio para o rastreamento da web, pois exigem que os visitantes resolvam quebra-cabeças para confirmar que são humanos. Esses quebra-cabeças geralmente incluem imagens que são difíceis de serem decifradas pelos computadores. Para contornar CAPTCHAs, use serviços dedicados de resolução de CAPTCHA ou ferramentas de rastreamento prontas para uso, como a ferramenta de rastreamento de dados da Oxylabs, que resolve CAPTCHAs e fornece resultados prontos para uso. Comportamento suspeito pode fazer com que o alvo solicite a resolução do CAPTCHA.
#8: Alterar o padrão de rastreamento
Para evitar ser bloqueado, modifique o padrão de navegação do seu rastreador para torná-lo menos previsível. Você pode adicionar cliques, rolagens e movimentos do mouse aleatórios para imitar o comportamento de navegação de um usuário normal. Para conhecer as práticas recomendadas, pense em como um usuário típico navegaria no site e aplicaria esses princípios à ferramenta. Por exemplo, visitar a página inicial antes de solicitar páginas internas é um padrão lógico.
#9: Reduza a velocidade do raspador
Para reduzir o risco de bloqueio, diminua a velocidade do raspador adicionando intervalos aleatórios entre solicitações ou iniciando comandos de espera antes de executar uma ação. Se o URL tiver taxa limitada, respeite as limitações do site e reduza a velocidade de raspagem para evitar a limitação de solicitações.
#10: rastreamento fora do horário de pico
Os rastreadores se movem mais rápido que os usuários normais e podem impactar significativamente a carga do servidor. O rastreamento durante períodos de alta carga pode afetar negativamente a experiência do usuário devido à lentidão do serviço. Para evitar isso, rastreie fora dos horários de pico, como logo após a meia-noite (localizado no serviço), para reduzir a carga no servidor.
#11: Evite raspagem de imagem
A raspagem de imagens pode ser arriscada, pois geralmente são objetos com muitos dados que podem ser protegidos por direitos autorais. Além disso, as imagens geralmente ficam ocultas em elementos JavaScript, o que pode aumentar a complexidade do processo de raspagem e desacelerar o web scraper. Para extrair imagens de elementos JS, seria necessário empregar um procedimento de raspagem mais complicado.
#12: Use um navegador sem cabeça
Um navegador headless é uma ferramenta que funciona como um navegador normal, mas sem uma interface gráfica de usuário. Ele permite a extração de conteúdo carregado pela renderização de elementos JavaScript. Os navegadores mais usados, Chrome e Firefox, possuem modos headless que podem ser usados para web scraping sem acionar bloqueios.
Tutorial em vídeo sobre como rastrear um site
Neste tutorial da Oxylabs, você encontrará noções básicas de rastreamento da web e sua importância para a coleta de dados, ao mesmo tempo em que discute aspectos éticos e legais. Ele mostra ferramentas populares como Scrapy, Beautiful Soup e Selenium e ajuda você a escolher a melhor para suas necessidades.
O tutorial ajuda você a entender a estrutura de um site, criar um rastreador da web simples e extrair as informações necessárias. Ele também lembra você de seguir boas maneiras de web scraping, como respeitar as regras do robots.txt e não sobrecarregar os servidores.
O vídeo também ajuda você a lidar com desafios como obter dados de páginas dinâmicas, lidar com múltiplas páginas e evitar bloqueios. Ele mostra como salvar e organizar seus dados e dá dicas sobre como tornar seu projeto de rastreamento da web maior e mais eficiente. Por fim, lembra que você deve sempre seguir as diretrizes éticas e legais.
À medida que chegamos ao fim da nossa emocionante exploração do mundo do web crawling, torna-se claro que dominar esta arte é o mesmo que possuir um mapa do tesouro na vasta e sempre mutável paisagem da Internet. Investigamos as complexidades que distinguem o rastreamento da web do web scraping, descobrimos diversas estratégias e nos aventuramos nos domínios dinâmicos dos sites JavaScript e do rastreamento da web com tecnologia Python.
Nosso tesouro de dicas e conselhos garante que seus esforços de rastreamento na web permaneçam responsáveis e éticos, evitando as armadilhas e obstáculos que possam surgir ao longo do caminho. Então, ao navegar no oceano digital sem limites, armado com o conhecimento e a sabedoria adquiridos neste artigo abrangente, lembre-se de que a capacidade de aproveitar o poder do rastreamento da web irá elevá-lo acima da concorrência e desbloquear as joias escondidas nas profundezas do o mundo digital.