Saltar para o conteúdo
Comece grátis
Voltar ao blogue

Web Scraping vs. Web Crawling: Guia para Principiantes

Anda MiuțescuÚltima atualização em 13 min read
Web Scraping vs. Web Crawling: Guia para Principiantes
Resumo: O rastreamento da Web descobre e visita páginas relevantes; a extração de dados da Web extrai informações úteis do seu conteúdo. Se já tiver os URLs, pode começar pela extração. Se precisar de encontrar páginas e recolher os seus dados, combine ambas as tarefas e verifique os resultados separadamente.

A diferença entre o «web scraping» e o «web crawling» reside na distinção entre extrair informação de páginas web e descobrir quais as páginas a visitar. Utiliza-se o «scraping» para recolher valores como títulos e preços de livros; utiliza-se o «crawling» para encontrar as páginas que os contêm.

Imagine que precisa de uma folha de cálculo com livros de programação vendidos por uma loja online. A página da categoria dá-lhe um ponto de partida, mas pode conter ligações para várias páginas de resultados. Encontrar os endereços dos livros é uma tarefa. Ler o autor e o preço corretos em cada página de livro é outra.

Conhecer a diferença ajuda-o a evitar dois resultados frustrantes: uma longa lista de links sem dados úteis, ou dados precisos de algumas páginas enquanto o resto do catálogo passa despercebido. Também o ajuda a compreender o que uma ferramenta faz realmente quando se descreve como um «scraper», «crawler», «spider» ou serviço de extração de dados.

Este guia compara os resultados, explica o funcionamento e acompanha uma livraria fictícia desde a descoberta até aos registos validados. Terá assim uma forma prática de escolher um fluxo de trabalho e testá-lo num pequeno lote antes de o expandir.

Web Scraping vs. Web Crawling: Compare os Resultados

Um web crawler descobre páginas e decide quais visitar. Um web scraper extrai informações do conteúdo das páginas. Ambos recuperam conteúdo da Web e podem trabalhar em várias páginas, mas resolvem partes diferentes de uma tarefa de recolha.

O que comparar

Web crawling

Web scraping

Objetivo principal

Encontrar e visitar páginas relevantes

Recolher os campos ou o texto de que necessita

Entrada típica

Endereços iniciais e regras de navegação

Endereços das páginas ou conteúdo e regras de extração

Resultados úteis

URLs, páginas descarregadas e informações sobre visitas

Dados estruturados, tais como títulos, preços e datas

Principal questão de qualidade

A tarefa alcançou as páginas pretendidas?

Extraiu os valores corretos?

Falha comum

Páginas em falta ou links irrelevantes

Campos em falta ou leitura do elemento errado

Por exemplo, descobrir as páginas de produtos de uma loja é uma tarefa de rastreamento. Extrair o preço de cada produto é uma tarefa de scraping. Um projeto que monitoriza um catálogo em constante mudança precisa de uma forma de lidar com ambas as tarefas.

A distinção não é «uma página versus muitas páginas». É possível fazer scraping de uma lista fornecida com milhares de endereços sem descobrir novos links. Também é possível fazer crawling de uma secção pequena e explicitamente delimitada de um site.

Ao comparar ferramentas de web scraping com ferramentas de web crawling, pergunte-se o que a ferramenta devolve. Uma lista de links não contém os preços que procura. Por outro lado, um preço correto de uma página conhecida não prova que encontrou o resto do catálogo. Escolha as capacidades que o seu resultado final exige.

Como um rastreador da Web descobre páginas

Comece com URLs de partida, os endereços a partir dos quais um rastreador começa a explorar. Num site de uma livraria, um ponto de partida poderia ser a categoria de programação. O rastreador obtém essa página, identifica os links elegíveis e coloca novos endereços numa fila, que é simplesmente uma lista de páginas à espera de serem visitadas.

Um rastreio delimitado segue uma sequência repetível:

  1. Recuperar um endereço da fila.
  2. Ler os links da página devolvida.
  3. Resolver os links relativos em relação ao endereço da página.
  4. Mantenha os endereços permitidos pelas suas regras de domínio e caminho.
  5. Adicionar endereços ainda não visitados à fila.
  6. Continue até a fila ficar vazia ou até atingir o seu limite de paragem.

A paginação é uma das razões pelas quais isto é importante. A primeira página de uma categoria pode mostrar apenas parte do seu catálogo. Seguir um link válido para a página seguinte pode revelar mais produtos, enquanto um limite de páginas mantém o teste controlável.

O rastreamento também é distinto da indexação. A explicação do Google sobre o funcionamento da Pesquisa distingue o descarregamento de páginas da análise e do armazenamento do seu conteúdo num índice. A descoberta ou a recuperação não garantem a inclusão nos resultados de pesquisa. O seu próprio rastreador pode precisar apenas de produzir um inventário, sem envolver nenhum índice de pesquisa.

Para projetos de web scraping versus web crawling, mantenha esse inventário inspecionável. Guarde o endereço descoberto e informações de visita suficientes para investigar falhas. O nosso guia de rastreamento do GoSpider mostra como uma ferramenta de descoberta dedicada se enquadra num fluxo de trabalho de recolha mais amplo. A tarefa do rastreador está concluída quando este atinge as páginas definidas pelo seu âmbito, e não quando tiver explorado todos os links que encontrar.

Como um web scraper extrai campos úteis

Uma página de produto contém mais do que um preço. Pode incluir navegação, produtos relacionados, avaliações de clientes e vários preços para diferentes edições. Um scraper necessita de regras que separem os campos desejados de tudo o resto.

O processo começa com a análise sintática, lendo a estrutura da página para que possa localizar elementos relevantes. Um seletor CSS pode identificar um elemento pelo seu tipo, classe ou outros atributos. Por exemplo, o método querySelector do navegador devolve o primeiro elemento correspondente, ou nenhum elemento se não houver correspondência. É devido a esse comportamento que um scraper precisa de lidar explicitamente com campos em falta.

Uma tarefa típica de extração faz o seguinte:

  1. Recupera o conteúdo da página.
  2. Localiza os elementos que contêm os campos necessários.
  3. Lê os seus valores.
  4. Normalizar esses valores para o formato escolhido.
  5. Valida o registo antes de o guardar.

Um preço apresentado de €18.50, por exemplo, poderia passar a ser 18.50 num campo numérico e EUR num campo de moeda separado. Decida se precisa do preço atual, do preço original ou de ambos antes de criar a regra de extração.

Os seletores CSS são uma opção; a extração de dados da Web via XPath oferece outra forma de localizar conteúdo dentro das estruturas dos documentos. Nenhuma das duas abordagens substitui a verificação de se os dados pretendidos chegaram efetivamente. Se uma página adicionar campos através de JavaScript, um navegador sem interface gráfica pode ser útil para a renderização antes da extração.

Este é o aspeto da qualidade dos dados na comparação entre web scraping e web crawling. Um endereço pode estar correto e um download pode ser bem-sucedido, enquanto o preço extraído está em falta ou pertence a outra edição. Valide os valores, não apenas o resultado do pedido.

Suponha que pretenda um pequeno conjunto de dados de livros de programação. O domínio books.example, os títulos dos livros e os valores abaixo são fictícios. Servem para ilustrar o fluxo de trabalho, sem sugerir que executámos uma tarefa de recolha em tempo real.

Descubra os endereços relevantes

Forneça ao crawler o endereço da categoria https://books.example/category/programming. Permita a paginação dessa categoria e as páginas de produtos no mesmo domínio. Exclua categorias não relacionadas deste exercício e defina um limite reduzido de páginas antes de começar.

A fase de descoberta poderá produzir estes endereços:

https://books.example/book/python-foundations
https://books.example/book/practical-web-data

Estas URLs são o ponto de passagem para a extração. Indicam-lhe onde procurar, mas ainda não respondem à questão de qual o preço de cada livro.

Extraia e valide cada registo

Para este exercício, define cinco campos: URL de origem, título, autor, preço e moeda. Um registo extraído ilustrativo pode ter o seguinte aspeto:

{
  "url": "https://books.example/book/python-foundations",
  "title": "Python Foundations",
  "author": "Taylor Reed",
  "price": 18.5,
  "currency": "EUR"
}

Mantenha os valores em falta distintos dos valores válidos. Se não aparecer nenhum preço, assinale o registo para revisão, em vez de guardar zero. Se duas edições partilharem o mesmo título, preserve o endereço identificativo em vez de as fundir apenas com base no título. Uma regra útil é armazenar contexto suficiente para voltar a encontrar o item de origem exato.

Combine as tarefas sem as confundir

Um único programa pode assumir ambas as responsabilidades. O tutorial do Scrapy demonstra a extração de dados e o seguimento de links para a página seguinte dentro do mesmo spider. A utilização de aplicações separadas é opcional; são as responsabilidades bem definidas que facilitam a investigação de problemas.

Para este exercício da livraria, analise o inventário de endereços e os registos de forma independente. Um livro em falta pode indicar um problema de descoberta. Um livro presente com o preço errado sugere um problema de extração. A distinção entre «web scraping» e «web crawling» é prática, porque essas falhas requerem soluções diferentes.

Escolha um fluxo de trabalho e teste um pequeno lote

Escolha o fluxo de trabalho mais simples capaz de produzir o resultado pretendido. Conhecer os endereços exatos das páginas elimina frequentemente a necessidade de uma etapa de descoberta separada.

Situação inicial

Primeira abordagem útil

Tem uma lista fixa de URLs de produtos

Recupere e extraia essas páginas

Precisa de localizar páginas numa categoria

Navegue dentro de limites explícitos

Precisa de registos de um catálogo em constante mudança

Combinar a descoberta e a extração

Precisa de um inventário de páginas para uma auditoria

Realizar o rastreio e reter informações relevantes sobre as visitas

Está disponível uma exportação adequada ou uma API documentada

Avalie essa interface antes de recolher o conteúdo das páginas

A decisão entre web scraping e web crawling também deve ter em conta o que se sente mais à vontade para manter. Um analisador (parser) necessita de regras de seleção de campos. Um rastreador (crawler) necessita de regras de navegação e de paragem. Uma estrutura (framework) pode reunir estas capacidades, enquanto um serviço alojado pode assumir a responsabilidade por partes específicas do trabalho.

Comece por um site que controle ou por um ambiente de teste destinado ao scraping. Escolha uma página e anote os campos esperados antes de executar qualquer coisa. Compare o registo extraído com a fonte e, em seguida, expanda para um pequeno lote que ainda consiga rever manualmente.

Defina o sucesso para esse lote em termos concretos: as páginas esperadas foram alcançadas, os campos obrigatórios estão presentes e os preços amostrados correspondem aos produtos pretendidos. Isto é mais útil do que contar apenas os pedidos bem-sucedidos.

Assim que o lote funcionar, altere uma dimensão de cada vez, como o número de páginas ou a categoria abrangida. Isso facilita associar um resultado inesperado à alteração que o provocou.

Evite erros comuns de rastreamento e extração de dados

A descoberta ampla de links pode ultrapassar a tarefa que pretendia. Filtros, calendários e navegação repetida podem gerar muitos endereços. Defina limites e uma condição de paragem antes de aumentar a cobertura.

O tratamento de duplicados também requer cuidado. Alguns parâmetros de URL limitam-se a registar uma visita; outros selecionam uma edição diferente do produto ou uma região. Verifique o que um parâmetro altera antes de o remover. Da mesma forma, títulos idênticos não provam que dois registos descrevam o mesmo artigo.

Respeite as instruções de rastreamento do site. A norma do Protocolo de Exclusão de Robôs explica que robots.txt as regras não constituem autorização de acesso. Um caminho permitido não deve ser tratado como uma permissão geral para aceder ou reutilizar o seu conteúdo. Mantenha a recolha dentro do âmbito para o qual está autorizado a operar.

Esteja atento aos sinais de resposta, bem como aos dados extraídos. O código HTTP 429 significa que o cliente enviou demasiados pedidos num determinado período. Um Retry-After cabeçalho pode indicar quando tentar novamente. Respeite esse sinal em vez de repetir imediatamente a mesma solicitação num ciclo contínuo.

Por fim, avalie trabalhos comparáveis. Uma solicitação para uma página conhecida e um rastreamento que descobre centenas de páginas são tarefas diferentes. Os requisitos de renderização, o volume de páginas, a complexidade da extração e o ritmo das solicitações afetam o tempo e os recursos necessários. Entre o web scraping e o web crawling, não há um vencedor universal em termos de velocidade. Acompanhe separadamente os URLs descobertos, as páginas recuperadas e os registos válidos, para que possa ver onde o tempo é gasto e onde a tarefa necessita de atenção.

Pontos-chave

  • Comece pelo resultado de que necessita. Um inventário de páginas requer descoberta; uma tabela de preços também necessita de extração de campos.
  • Limite o rastreamento aos domínios permitidos, aos caminhos relevantes e a um limite de paragem explícito. Analise os URLs descobertos antes de alargar a cobertura.
  • Defina os campos obrigatórios antes do scraping. Trate um valor em falta como um problema a inspecionar, em vez de o substituir por um valor predefinido que pareça plausível.
  • Verifique a descoberta, a recuperação e a extração de forma independente. Uma solicitação bem-sucedida não prova que foi produzido o registo correto.
  • Expanda gradualmente um lote pequeno e verificado para que possa compreender por que razão os resultados mudam.

Perguntas frequentes

Posso extrair dados de ficheiros HTML guardados no meu computador?

Sim. Pode analisar o HTML guardado sem recuperar a página novamente, desde que o ficheiro contenha os campos de que necessita. Guarde o URL original e a hora de download juntamente com o ficheiro, para que os valores extraídos permaneçam rastreáveis. Se o ficheiro tiver sido guardado antes de o JavaScript ter adicionado o conteúdo relevante, esse conteúdo não aparecerá simplesmente porque analisa o ficheiro posteriormente.

Um rastreador necessita de outra fonte para esse endereço, como um mapa do site ou uma lista de sementes explícita. O simples seguimento de links não consegue revelar uma página para a qual nenhuma das páginas visitadas aponte. Quando a exaustividade é importante, compare os resultados da descoberta com um inventário fidedigno ao qual tenha acesso. Uma fila vazia significa que a exploração disponível terminou; não prova que todas as páginas tenham sido encontradas.

Com que frequência devo revisitar uma página?

Defina o calendário de revisitas de acordo com a atualidade necessária do seu conjunto de dados e com os limites operacionais da fonte. Um arquivo único e um relatório diário de preços têm requisitos diferentes. Registe os horários de recolha e observe se os campos mudam efetivamente entre as visitas. Utilize essas observações para aperfeiçoar o calendário, em vez de partir do princípio de que uma recolha mais frequente produz sempre dados mais úteis.

Preciso de aprender Python para começar?

Não. O rastreamento e a extração de dados são tarefas, e não funcionalidades específicas de uma linguagem de programação. Pode utilizar outra linguagem que já conheça ou uma ferramenta que forneça o fluxo de trabalho necessário através de uma interface visual. Ainda assim, terá de definir as páginas e os campos que pretende, inspecionar os registos resultantes e compreender quais as partes do processo que a ferramenta trata por si.

Conclusão: Crie o fluxo de trabalho mais simples que produza dados úteis

O resultado útil de um projeto de recolha são dados que consiga compreender e verificar. O «web scraping» e o «web crawling» descrevem duas responsabilidades que o ajudam a alcançar esse resultado: encontrar páginas relevantes e extrair delas a informação de que necessita.

Se já tiver os endereços, comece por testar a extração numa página. Se os endereços estiverem em falta, defina primeiro uma tarefa de descoberta limitada. Em qualquer dos casos, decida como deve ser um registo válido antes de aumentar o volume. O exemplo da livraria funciona porque os campos de saída e o âmbito pretendido da página são suficientemente claros para serem inspecionados.

Mantenha o processo de transferência visível à medida que o projeto cresce. Registe quais as páginas que foram descobertas, quais foram recuperadas e quais produziram dados válidos. Essas evidências ajudam-no a distinguir um problema de navegação de um campo em falta ou de um pedido falhado, e dão-lhe um ponto de partida concreto para as correções.

Se a recuperação de páginas se tornar a parte em que precisa de ajuda para operar, explore a API Scraper da WebScrapingAPI. Esta pode tratar da camada de recuperação enquanto mantém o âmbito da recolha e as verificações de dados explícitos. Comece com uma página representativa e avalie o resultado em relação aos campos de que o seu projeto realmente necessita.

Sobre o autor

Anda Miuțescu, Redator de conteúdos técnicos @ WebScrapingAPI

Anda Miuțescu

Redator de conteúdos técnicos

Anda Miuțescu é redatora de conteúdos técnicos na WebScrapingAPI, criando conteúdos claros e úteis que ajudam os programadores a compreender o produto e as suas funcionalidades.

Tutorial de Python do Nodriver: Extração discreta de dados da Web — Do primeiro script à produção
A ciência da extração de dados da Web

Tutorial de Python do Nodriver: Extração discreta de dados da Web — Do primeiro script à produção

TL;DR: Resumo: O Nodriver é uma biblioteca Python assíncrona que controla o Chromium através do Chrome DevTools Protocol, sem Selenium nem o binário chromedriver. Utilize-o quando um navegador furtivo auto-hospedado, mais próximo de uma sessão real do Chrome, é melhor do que uma stack WebDriver, mas saiba que, por si só, não elimina riscos de IP, TLS ou comportamento. Este tutorial vai de um primeiro script à produção em contentores e a uma Browser API alojada.

Suciu Dan15 min read
Ler artigo
Como lidar com URLs de redirecionamento do Google /goto e tokens CAES num scraper de SERP
A ciência da extração de dados da Web

Como lidar com URLs de redirecionamento do Google /goto e tokens CAES num scraper de SERP

TL;DR: Resumo: Os URLs /goto do Google com um token CAES, e os wrappers /url mais antigos, são camadas de redirecionamento, não destinos, por isso um scraper de SERP que trata cada href como final estraga o acompanhamento de posições e as bases de links. Prefira uma API de SERP estruturada quando devolve os links de destino. Quando tiver de analisar HTML, classifique cada href, elimine redirecionamentos duplicados e resolva-os com um GET simples. Não desencripte o CAES.

Suciu Dan13 min read
Ler artigo
Cabeçalhos de resposta HTTP no cURL: Cada flag, técnica e receita de scripting
A ciência da extração de dados da Web

Cabeçalhos de resposta HTTP no cURL: Cada flag, técnica e receita de scripting

TL;DR: O cURL esconde os cabeçalhos de resposta por padrão. Use -i para ver os cabeçalhos junto com o corpo, -I para uma solicitação HEAD que retorna apenas cabeçalhos, -v para depuração completa de solicitação/resposta e -D para salvar cabeçalhos em um arquivo. Para scripts modernos, o cURL 7.83+ permite extrair cabeçalhos individuais ou despejar todos eles como JSON com a opção -w write-out.

Suciu Dan12 min read
Ler artigo

Comece a construir

Pronto para expandir a sua recolha de dados?

Junte-se a mais de 2.000 empresas que utilizam a WebScrapingAPI para extrair dados da Web à escala empresarial, sem quaisquer custos de infraestrutura.