21 pontos por GN⁺ 2024-07-11 | 2 comentários | Compartilhar no WhatsApp
  • Crawlee é uma biblioteca Python para web scraping e automação de navegador
  • Ajuda a criar crawlers confiáveis rapidamente
  • Pode ser usada para extração de dados para AI, LLM, RAG e GPT
  • Pode baixar arquivos como HTML, PDF, JPG e PNG de sites
  • Funciona com BeautifulSoup, Playwright e HTTP puro
  • Suporta tanto o modo headful quanto o modo headless
  • Oferece rotação de proxies

Recursos

  • Fornece uma interface unificada para crawling via HTTP e navegador headless
  • Executa crawling paralelo automaticamente com base nos recursos de sistema disponíveis
  • Escrita em Python com type hints, melhorando o autocompletar da IDE e reduzindo bugs
  • Repetição automática em caso de erro ou bloqueio
  • Recursos integrados de rotação de proxies e gerenciamento de sessões
  • Roteamento de requisições configurável - envia URLs diretamente para o handler apropriado
  • Fila persistente para as URLs a serem rastreadas
  • Armazenamento plugável tanto para dados tabulares quanto para arquivos
  • Recursos robustos de tratamento de erros

Diferenças em relação ao Scrapy

  • O Crawlee oferece suporte nativo a crawling com navegador headless (Playwright)
  • Interface simples e elegante - é possível configurar um scraper com menos de 10 linhas de código
  • Aplicação completa de type hints
  • Baseado em Asyncio padrão

Opinião do GN⁺

  • O Crawlee parece ser uma ferramenta poderosa para web scraping e crawling. Em especial, o suporte nativo a crawling baseado em navegador headless parece ser uma grande vantagem.
  • Como é possível criar crawlers com uma interface simples e pouco código, a produtividade parece alta. Além disso, o uso ativo de type hints melhora a experiência de desenvolvimento e reduz a possibilidade de erros.
  • Se for um projeto que precisa de crawling para extração de dados, vale considerar seriamente o Crawlee. Em especial, se você precisar rastrear páginas que exigem renderização em JavaScript, o PlaywrightCrawler parece ser útil.
  • No entanto, se for necessário crawling em escala muito grande ou se a baixa latência for essencial, pode ser melhor usar o Scrapy ou outra ferramenta com suporte a crawling distribuído.
  • Também parece recomendável revisar bem as políticas de crawling e as questões legais antes de usar.

2 comentários

 
yangeok 2024-07-15

Eu sabia que tinha suporte a Node, mas pelo visto também tem suporte a Python. Se for um scraper que precise de manutenção contínua, acho que vale considerar seriamente um framework hehe

 
GN⁺ 2024-07-11
Opiniões no Hacker News
  • É importante documentar os recursos existentes. Não adianta uma plataforma de web scraping ser excelente se só quem a criou consegue entendê-la

    • Por exemplo, é difícil entender o significado de tiered_proxy_urls: list[list[str]] | None = None
    • Os exemplos deveriam mostrar como encontrar e baixar todos os dados, incluindo tabelas .csv e .xlsx
    • Buscar apenas texto e procurar URLs é algo que qualquer um consegue fazer
    • São necessários exemplos que façam parsing de 1000 itens diferentes e obtenham de 3 a 5 itens por endpoints distintos
    • Não está claro se essa ferramenta é um framework ou uma ferramenta de automação
    • Fico curioso se ela oferece suporte a protocolos de opt-out de web scraping, como robots.txt, HTTP e tags de conteúdo. Isso se tornou especialmente importante após a diretiva DSM da UE
  • Obrigado à Apify/Crawlee. Como usuário antigo de Node.js, essa foi a biblioteca que melhor funcionou para mim

  • Descobri o Crawlee enquanto procurava uma stack para um projeto. Eu queria uma biblioteca Python, mas acabei usando o Crawlee com Typescript e concluí o projeto em uma semana

    • A API é muito melhor do que qualquer API de scraping em Python que já usei até hoje
    • A integração com Playwright torna a experiência de programação muito conveniente
    • Funciona bem para sites com renderização no frontend e para capturar respostas XHR modificadas
    • Pretendo escalar usando a plataforma Apify
  • Fico curioso sobre como ele se diferencia do Scrapy

  • Fico curioso sobre qual seria o motivo para migrar de outras bibliotecas. Já construí meu próprio crawler, mas não encontrei nada particularmente único

  • O código Python moderno parece legal

    • No código de exemplo, const data = await crawler.get_data() parece Javascript. Parece que está faltando um underscore
  • Sugiro trazer mais snippets de código dos casos de teste para os exemplos da documentação. Bom trabalho

  • Ferramentas de scraping são sempre bem-vindas. Pretendo experimentar em um projeto pessoal. Graças à IA, o scraping hoje parece vender pás em uma corrida do ouro