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 proibidas. Além disso, existe o arquivo 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
Rastrear sites JavaScript pode ser mais desafiador do que rastrear páginas HTML estáticas, pois o conteúdo é frequentemente carregado e manipulado por código JavaScript. Para rastrear esses sites, você precisa usar um navegador headless que execute JavaScript e renderize o conteúdo da página. Uma opção popular para essa tarefa é a combinação da biblioteca Puppeteer com o 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 raspar um site, certifique-se de que o alvo permite a coleta de dados da página dele. Verifique o arquivo do protocolo de exclusão de robôs (robots.txt) do site e cumpra as normas do site.
Mesmo que o site permita o rastreamento, seja respeitoso e não danifique o site. Cumpra as normas especificadas 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 intervalo entre as solicitações.
No entanto, mesmo que o site permita web scraping, você ainda poderá encontrar bloqueios, por isso é essencial seguir etapas adicionais. Para um guia mais completo, consulte nosso tutorial de web scraping em Python.
#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 seu dispositivo e o site de destino reduz os bloqueios de endereço IP, garante o anonimato e permite que você acesse sites que podem estar indisponíveis em sua região. Por exemplo, se você estiver na Alemanha, pode ser necessário utilizar um proxy dos EUA para acessar 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 utilizar um pool de proxy, é crucial rotacionar 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 rotacionam IPs, mas se você usa proxies de data center, deve usar um serviço de rotacionador de proxy. Também rotacionamos 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 os agentes de usuário mais populares e atualizados. Se você estiver fazendo solicitações com um agente de usuário de cinco anos de uso, de uma versão do Firefox sem suporte, isso levanta 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 no momento. 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 definidos pelo sistema operacional ou dispositivo do usuário final. Se você está se perguntando como evitar ser incluído na lista negra durante o scraping, certifique-se de que seus parâmetros sejam consistentes. Como alternativa, você pode usar o Web Unblocker – uma solução de proxy com tecnologia de IA e funcionalidade de impressão digital dinâmica. O Web Unblocker combina muitas variáveis de impressão digital de forma que, mesmo quando identifica uma única impressão digital que funciona melhor, ela ainda é aparentemente aleatória e pode passar por verificações antibot.
#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 difíceis de decifrar por computadores. Para contornar os CAPTCHAs, use serviços dedicados à resolução de CAPTCHAs 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. Comportamentos suspeitos podem levar o alvo a solicitar a resolução de CAPTCHAs.
#8: Alterar o padrão de rastreamento
Para evitar bloqueios, modifique o padrão de navegação do seu rastreador para torná-lo menos previsível. Você pode adicionar cliques, rolagens e movimentos aleatórios do mouse para imitar o comportamento de navegação de um usuário comum. Como práticas recomendadas, pense em como um usuário típico navegaria no site e aplique 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 scraper adicionando intervalos aleatórios entre as solicitações ou iniciando comandos de espera antes de executar uma ação. Se a URL tiver limitação de taxa, respeite as limitações do site e reduza a velocidade do scraping para evitar o estrangulamento das 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 web e sua importância para a coleta de dados, além de discutir aspectos éticos e legais. O tutorial apresenta 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 web simples e extrair as informações necessárias. Ele também lembra você de seguir boas práticas 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, fica claro que dominar essa arte é como possuir um mapa do tesouro na vasta e sempre mutável paisagem da internet. Mergulhamos nas complexidades que distinguem o web crawling do web scraping, descobrimos diversas estratégias e nos aventuramos nos reinos dinâmicos dos sites em JavaScript e do web crawling com 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.