Voltar ao blogue
A ciência da extração de dados da Web
Suciu Dan13 de dezembro de 20229 minutos de leitura

Rastreamento da Web com Python: Um guia detalhado sobre como fazer scraping com Python

Rastreamento da Web com Python: Um guia detalhado sobre como fazer scraping com Python

Rastreador da Web: O que é?

Rastreador da Web: O que é?

Web scraping e web crawling são duas teorias distintas, mas relevantes. O web crawling sempre foi uma parte crucial do web scraping, uma vez que os URLs que são processados pelo código do web scraper só funcionam quando a lógica do crawler os encontra.

Os rastreadores da Web vêm com uma série de URLs para visitar, conhecidas como sementes. O rastreador da Web rastreia e localiza links no documento HTML para cada URL, filtra e classifica todos os links dependendo de alguns fatores e incorpora os novos links de URL numa fila.

Extrai alguns dados específicos da Web ou todas as tags HTML e dados, que são subsequentemente processados por um pipeline único.

Code editor screenshot showing a PHP function with a sidebar of CSS files

Fonte:

Classificação dos Crawlers da Web

Classificação dos Crawlers da Web

Com base na estrutura e tecnologia implementadas, os rastreadores da Web podem ser categorizados nos seguintes tipos: rastreadores da Web profunda, rastreadores da Web incrementais, rastreadores da Web focados e rastreadores da Web gerais.

Rastreadores da Web e o seu fluxo de trabalho fundamental

Rastreadores da Web e o seu fluxo de trabalho fundamental Close-up photo of HTML code on a screen with the words

Fonte:

Um rastreador da Web geral consiste no seguinte fluxo de trabalho básico:

Obter o primeiro URL. O primeiro elemento, o URL inicial, é o ponto de entrada do rastreador da Web, que o liga e o direciona para a página da Web que precisa de ser rastreada.

Ao rastrear a página web, deve extrair o conteúdo HTML da página web e, em seguida, aplicar o método de análise ou analisadores HTML para extrair os URLs de todas as páginas ligadas a esta página web específica.

Colocar todas estas URLs numa fila. Percorrer esta fila e ler e compreender as URLs uma de cada vez.

Em seguida, rastreie a página web correspondente a cada URL e repita os passos acima mencionados.

Por fim, verifique se a condição de paragem está cumprida. Se não estiver definida, o rastreador continuará a rastrear até não conseguir obter um novo URL.

Rastreamento da Web: Que Preparação Ambiental É Necessária?

Rastreamento da Web: Que Preparação Ambiental É Necessária?
  • Certifique-se de que instala navegadores como o Chrome, o Internet Explorer ou o Safari no seu ambiente.
  • Comece por descarregar e instalar a linguagem de programação Python.
  • Posteriormente, descarregue um IDE adequado, como o Visual Studio Code.
  • Comece a instalar os ficheiros Python necessários. Por exemplo, o Pip é uma ferramenta de gestão Python que o ajuda a encontrar, descarregar, instalar e até desinstalar pacotes Python.

Estratégias para o rastreamento da Web que deve conhecer

Estratégias para o rastreamento da Web que deve conhecer Close-up photo of programming code on a screen with red and blue syntax highlighting

Normalmente, os rastreadores da Web exploram apenas um subconjunto de páginas da Web com base no orçamento do rastreador. Este orçamento pode ser o número máximo de páginas por profundidade, domínio ou tempo de implementação.

Sites bem conhecidos oferecem um ficheiro robots.txt para identificar e exibir os segmentos do site que não podem ser rastreados por nenhum agente de utilizador. O documento XML sitemap.xml é exatamente o oposto do ficheiro robots.txt, pois lista todas as páginas que podem ser rastreadas.

Alguns dos casos de utilização mais populares dos rastreadores da Web incluem o seguinte:

Caso de Utilização 1:

Caso de Utilização 1:

Motores de busca como o Yandex Bot, o Bingbot, o Googlebot, etc., extraem todos os documentos HTML de um grande segmento da web. Os dados extraídos são posteriormente indexados para serem transformados em dados pesquisáveis.

Caso de Utilização 2:

Caso de Utilização 2:

Para além da recolha de código HTML, os programas de software de análise de SEO também recolhem metadados, tais como o objeto de resposta, o tempo de resposta e o código de estado, para encontrar páginas web danificadas e os links entre os vários domínios, a fim de extrair backlinks.

Caso de Utilização 3:

Caso de Utilização 3:

Um site de comércio eletrónico é submetido a rastreamento da Web através de ferramentas de monitorização de preços para detetar páginas de produtos e recolher metadados, principalmente o preço. Posteriormente, são realizadas revisitas periódicas às páginas de produtos do site de comércio eletrónico.

Caso de Utilização 4:

Caso de Utilização 4:

Um repositório aberto de informações ou dados de rastreadores da Web é mantido e preservado pelo Common Crawl. Por exemplo, existem 2,71 mil milhões de páginas da Web armazenadas no arquivo em outubro de 2020.

Desenvolver um rastreador da Web básico em Python desde o início

Desenvolver um rastreador da Web básico em Python desde o início Diagram of a web scraping workflow showing browser requests, a scraping application, and a database

Fonte:

Para desenvolver um rastreador web básico num ficheiro Python, necessitará de, no mínimo, uma biblioteca para descarregar as tags HTML a partir de URLs e uma biblioteca de análise de HTML para recolher links.

A comunidade Python oferece bibliotecas padrão como a html.parser para analisar HTML e a urllib para realizar pedidos HTTP. No Github, pode encontrar um exemplo de rastilhador Python desenvolvido apenas com estas bibliotecas padrão.

As ferramentas padrão de desenvolvimento Python para métodos de análise de HTML e solicitações não são muito fáceis de usar para os programadores.

Outras bibliotecas bem conhecidas, como a biblioteca requests e a BeautifulSoup, oferecem uma experiência de desenvolvimento melhorada.

Para compreender melhor, reveja as orientações mencionadas anteriormente nesta secção e siga um conjunto definido de códigos-fonte HTML.

Normalmente, o código acima é simples. No entanto, existem vários desafios de usabilidade e desempenho a resolver antes de rastrear um site inteiro e extrair dados da Web de forma completa.

  • O rastreador da Web é tipicamente lento e não oferece equilíbrio. Normalmente, um rastreador da Web leva cerca de um segundo para rastrear uma URL específica.
  • Sempre que um rastreador da Web envia um pedido, fica na fila para a resolução do pedido, e nenhuma tarefa é realizada entretanto.
  • Não existe uma opção de repetição para a lógica do URL de download. A fila de URLs não é uma fila real e é ineficiente quando envolve muitos URLs.
  • A lógica de extração de links não suporta a filtragem de URLs por domínio ou a filtragem de pedidos para ficheiros estáticos, não gere URLs que comecem com uma hashtag (#) e evita suportar a padronização de URLs através da remoção dos parâmetros da cadeia de consulta da URL.
  • O rastreador da Web ignora o ficheiro robots.txt e não se identifica nem se deteta.

Agora, vamos ver por que deve instalar o Scrapy e como ele torna o rastreamento personalizado da Web mais fácil do que nunca.

Rastreamento da Web via Python

Rastreamento da Web via Python Scrapy project homepage screenshot with installation options and a sample spider code block

Fonte:

O Scrapy é um dos pacotes Python de web scraping e rastreamento mais conhecidos, com uma excelente classificação geral no Github.

Uma vantagem significativa do Scrapy é que os pedidos são organizados e tratados de forma assíncrona. Isto significa que o Scrapy pode enviar outro pedido antes de o anterior estar concluído ou realizar outra operação entretanto.

O Scrapy também consegue lidar com várias solicitações simultâneas, mas também pode ser configurado para respeitar os sites através de definições personalizadas.

O Scrapy vem com uma arquitetura composta por vários elementos web. Normalmente, irá executar, no mínimo, duas classes diferentes: a classe Spider e a classe Pipeline.

O web scraping pode ser considerado um ETL; aqui, extrair dados de todo o HTML e da web é tudo o que tem de fazer. Claro que terá de carregar os dados extraídos no seu armazenamento pessoal.

O spider do Scrapy extrai dados e os pipelines garantem o carregamento sem falhas dos mesmos no seu próprio armazenamento. Pode observar a transformação tanto nos pipelines como nos spiders.

No entanto, é aconselhável configurar um pipeline Scrapy personalizado para converter cada item separadamente. Com esta abordagem, a incapacidade de processar qualquer item não afetará os outros itens.

Além disso, também pode incorporar o spider do Scrapy e o middleware de download entre os componentes.

Visão geral da arquitetura do Scrapy

Visão geral da arquitetura do Scrapy Diagram of Scrapy architecture showing spiders, engine, scheduler, downloader, and item pipelines

Se já experimentou o Scrapy anteriormente, saberá que os web scrapers são definidos como uma classe gerada a partir da classe Spider básica e que implementa um método de análise para lidar com todas as respostas.

Instale o Scrapy, que também oferece várias classes de spider genéricas, incluindo o SitemapSpider, o CSVFeedSpider, o XMLFeedSpider e o CrawlSpider.

A classe CrawlSpider é também um ramo da classe base Scrapy Spider que oferece um atributo de regras adicional para definir as formas de rastrear um site específico.

Cada regra utiliza um LinkExtractor para identificar os links que devem ser extraídos de cada página web.

Desenvolvendo um Rastilador Scrapy Exemplar para o IMDb

Desenvolvendo um Rastilador Scrapy Exemplar para o IMDb

Antes de tentar rastrear o site do IMDb, verifique quais as rotas de URL permitidas consultando o ficheiro robots.txt do IMDb.

Apenas 26 rotas ou caminhos são proibidos pelo ficheiro robots.txt para todos os agentes de utilizador. O Scrapy lê e verifica o ficheiro robots.txt antes de iniciar e cumpre-o quando a configuração ROBOTSTXT_OBEY está definida como verdadeira.

Isto aplica-se a todos os projetos criados utilizando o comando startproject do Scrapy.

Rastreamento Web em Escala

Rastreamento Web em Escala

Por predefinição, para um site como o IMDb, os spiders da Web do Scrapy podem rastrear cerca de 600 páginas por minuto. Um único robô demora normalmente mais de 50 dias a rastrear cerca de 45 milhões de páginas.

Para rastrear vários sites, é aconselhável implementar rastreadores web individuais para cada grupo de sites.

O rastreamento da Web com um programa Python é fácil através da configuração do Scrapy

O rastreamento da Web com um programa Python é fácil através da configuração do Scrapy

Pode criar o código-fonte de um rastreador de estrutura Python de duas maneiras. A primeira é utilizando bibliotecas de terceiros para descarregar URLs de páginas web, e a segunda é analisando HTML com um rastreador web concebido através de uma estrutura de rastreamento web popular.

O Scrapy é uma excelente estrutura de rastreamento da Web que pode ser facilmente ampliada através do seu código personalizado. No entanto, é necessário ter conhecimento de todos os pontos onde pode incorporar o seu próprio código e das configurações de cada componente.

Uma configuração adequada e integrada do Scrapy torna-se ainda mais crucial quando rastreia sites compostos por milhões de páginas web. Se pretende aprofundar os seus conhecimentos sobre rastreamento web, é aconselhável selecionar um site de boa reputação e começar a rastreá-lo.

Realize rastreamento e extração da Web sem falhas utilizando a WebScrapingAPI

Realize rastreamento e extração da Web sem falhas utilizando a WebScrapingAPI WebScrapingAPI page screenshot describing data extraction and proxy rotation features with icons of popular sites

Fonte:

Embora existam muitos rastreadores de dados de código aberto, estes podem não ser capazes de rastrear páginas web e sites complexos em grande escala.

Terá de ajustar e modificar o código subjacente para garantir que o código funciona na página pretendida. Além disso, pode não funcionar em todos os programas de software operativo do seu ambiente. Outra questão que pode surgir são os requisitos computacionais e de velocidade.

Para superar esses obstáculos, a WebScrapingAPI permite-lhe rastrear várias páginas independentemente da linguagem de programação, dos seus dispositivos ou plataformas e guarda o conteúdo em sistemas de bases de dados ou em formatos de ficheiros básicos, compreensíveis e legíveis, como .csv.

Quando se trata de rastrear dados da Web e executar funcionalidades de web scraper, a WebScrapingAPI torna tudo mais simples do que nunca.

Pode saber mais sobre as nossas capacidades de web scraping e rastreamento visitando o nosso site e contactando-nos. Para obter informações detalhadas sobre os nossos preços, clique aqui

Sobre o autor
Suciu Dan, Co-fundador @ WebScrapingAPI
Suciu DanCo-fundador

Suciu Dan é cofundador da WebScrapingAPI e escreve guias práticos, voltados para programadores, sobre web scraping em Python, web scraping em Ruby e infraestruturas de proxy.

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.