41 pontos por GN⁺ 2024-02-21 | 5 comentários | Compartilhar no WhatsApp

Vantagens do web scraping com Python

  • Sintaxe simples: permite programar rapidamente
  • Bibliotecas embutidas: urllib, lxml e outras ajudam no scraping
  • Bibliotecas de scraping maduras: Beautiful Soup, Scrapy e outras
  • Versatilidade: útil para construir pipelines de dados
  • Interoperabilidade: funciona bem para integração com outras linguagens e quando desempenho é importante

Bibliotecas de web scraping em Python

  • BeautifulSoup: parsing de HTML/XML, navegação e busca flexíveis
  • Scrapy: rápido e escalável, com middleware e recursos de crawling distribuído
  • Selenium: automação de navegador, processamento de sites centrados em JavaScript
  • lxml: parser de XML/HTML extremamente rápido
  • pyquery: acesso a elementos HTML com sintaxe no estilo jQuery

Preparação para o scraping

  • Recomenda-se configurar um ambiente virtual
  • Bibliotecas necessárias: Requests, BeautifulSoup, OS

Escolha do site a ser raspado

  • Escolha da página "Lista de raças de cães" da Wikipédia
  • HTML bem estruturado, vários campos de dados e imagens incluídas

Escrevendo o código de scraping

  • Importar as bibliotecas necessárias
  • Usar User-Agent para se passar por um navegador
  • Baixar a página HTML via requests e validar a resposta
  • Fazer o parsing do HTML com BeautifulSoup
  • Extrair dados com seletores CSS
  • Baixar e salvar imagens

Desafios reais do web scraping e boas práticas

  • Tratamento de conteúdo dinâmico: usar Selenium ou integração do Splash com Scrapy
  • Evitar bloqueios: controlar a velocidade das requisições, imitar o navegador, rotacionar user agents e proxies
  • Limitação de taxa: respeitar atraso de crawl, usar proxies e ajustar requisições automaticamente
  • Parsing de HTML complexo: usar parsers robustos como lxml e reforçar os seletores

Opinião do GN⁺

  • Ponto mais importante: Python é uma linguagem poderosa para web scraping, com sintaxe simples e um ecossistema rico de bibliotecas, sendo adequada para projetos de diferentes tamanhos.
  • Por que é interessante: web scraping é uma habilidade essencial para coleta e análise de dados, e este guia oferece conhecimento prático que engenheiros de software iniciantes podem aplicar em projetos reais.
  • Por que é útil: web scraping pode ser aplicado em diversas áreas, e este guia ajuda a desenvolver técnicas de scraping sólidas para o mundo real por meio de desafios práticos e boas práticas.

5 comentários

 
yangeok 2024-02-26

Para renderização em JavaScript, o Playwright é imbatível. Parece que o suporte a linguagens é bem amplo.

Se combinar com o Scrapy, acho que pode haver uma boa sinergia.

 
ikbzbcg15 2024-02-21

Ah, hoje em dia tem que usar playwright.

 
bandoche 2024-02-21

Na prática, quando você trabalha com scraping, o mais trabalhoso do que parece acaba sendo lidar com o navegador (o chrome webdriver, que frequentemente dá erro) e contornar bloqueios (os diversos CAPTCHAs).

 
GN⁺ 2024-02-21
Opiniões do Hacker News
  • É importante separar crawling de scraping na web. Crawling é a etapa de encontrar URLs e buscar o conteúdo HTML, enquanto scraping é a etapa de extrair dados estruturados do HTML. Separar as duas etapas permite depois modificar o scraper e reaplicá-lo rapidamente aos dados existentes.
  • Recomenda Playwright como ferramenta de web scraping em Python. É uma ferramenta de automação de navegador muito poderosa e bem projetada, e usa a ferramenta de linha de comando shot-scraper CLI, que permite fazer scraping de páginas web diretamente pelo terminal.
  • Empresas SaaS promoverem seus próprios produtos em posts de blog faz parte do marketing, mas sempre é curioso quando apresentam o problema para iniciantes pela primeira vez e colocam seu próprio produto como solução.
  • Pode ser útil verificar o <domain>/robots.txt, que contém informações úteis para scraping de sites, e extrair dados por meio de metadados estruturados em vez de fazer parsing de tags HTML. Também existem bibliotecas que extraem isso como JSON.
  • Questiona a popularidade do uso de Node.js para web scraping em vez de Python. No npm há pacotes bem-feitos para parsing de DOM e, como usa JavaScript, é possível aproveitar recursos de DOM de forma mais natural.
  • É possível obter links de forma simples usando read_html do pandas. Com isso, dá para extrair facilmente dados de tabelas de um site.
  • Cansado de tarefas de web scraping repetitivas e pouco criativas, agora está tentando usar LLMs (Large Language Models) para automatizar todo o processo. É eficiente usar LLMs para gerar e ajustar código de scraper que se adapte a mudanças nos sites.
  • Questiona quantos “guias completos” sobre scraping em Python existem.
  • Uma configuração moderna de web scraping precisa de um agente de navegador, e para obter dados de grandes plataformas de mídia social ou de artigos do New York Times talvez seja necessário construir ferramentas próprias.
  • Durante trabalhos de scraping, a biblioteca requests-cache ajuda bastante. Ela substitui a biblioteca requests, mas armazena em cache todas as respostas em um banco de dados SQLite, o que é útil para ajustar scripts quando o site começa a impor limitações.
 
xguru 2024-02-21

O importante neste comentário é

Faz parte do marketing as empresas de SaaS promoverem seus próprios produtos em posts de blog, mas é sempre engraçado quando apresentam um problema pela primeira vez para iniciantes e colocam o próprio produto como solução.

É isso aqui. Ao ler esse tipo de texto, é preciso sempre ter em mente que no final acaba entrando a propaganda do próprio produto. Dito de outra forma, acho que as empresas nacionais também deveriam usar esse tipo de abordagem como básico.