21 points par GN⁺ 2024-07-11 | 2 commentaires | Partager sur WhatsApp
  • Crawlee est une bibliothèque Python pour le web scraping et l’automatisation de navigateur
  • Elle aide à créer rapidement des crawlers fiables
  • Elle peut être utilisée pour l’extraction de données destinée à l’IA, aux LLM, au RAG et à GPT
  • Elle permet de télécharger depuis des sites web des fichiers comme du HTML, PDF, JPG ou PNG
  • Fonctionne avec BeautifulSoup, Playwright et le HTTP pur
  • Prend en charge à la fois les modes headful et headless
  • Propose une fonctionnalité de rotation de proxy

Caractéristiques

  • Fournit une interface unifiée pour le crawling HTTP et celui via navigateur headless
  • Effectue automatiquement du crawling parallèle en fonction des ressources système disponibles
  • Écrite en Python avec des indications de type, ce qui améliore l’autocomplétion dans les IDE et réduit les bugs
  • Fonction de nouvelle tentative automatique en cas d’erreur ou de blocage
  • Fonctionnalités intégrées de rotation de proxy et de gestion de session
  • Routage configurable des requêtes : envoie directement les URL vers le gestionnaire approprié
  • File d’attente persistante pour les URL à explorer
  • Stockage enfichable aussi bien pour les données tabulaires que pour les fichiers
  • Solides capacités de gestion des erreurs

Différences avec Scrapy

  • Crawlee prend en charge nativement le crawling via navigateur headless (Playwright)
  • Interface simple et élégante : il est possible de configurer un scraper en moins de 10 lignes de code
  • Prise en charge complète des indications de type
  • Repose sur l’Asyncio standard

Avis de GN⁺

  • Crawlee semble être un outil puissant pour le web scraping et le crawling. Son principal atout paraît être la prise en charge native du crawling basé sur des navigateurs headless.
  • Son interface simple et la faible quantité de code nécessaire pour créer un crawler donnent une forte impression de productivité. En outre, l’utilisation poussée des indications de type améliore l’expérience de développement et réduit les risques d’erreur.
  • Pour un projet nécessitant du crawling afin d’extraire des données, Crawlee mérite clairement d’être envisagé. En particulier, si vous devez crawler des pages web nécessitant un rendu JavaScript, PlaywrightCrawler semble très utile.
  • En revanche, si vous avez besoin d’un crawling à très grande échelle ou si la réactivité en temps réel est essentielle, il peut être préférable d’utiliser Scrapy ou un autre outil prenant en charge le crawling distribué.
  • Il semble également souhaitable d’examiner attentivement les politiques de crawling et les questions juridiques avant utilisation.

2 commentaires

 
yangeok 2024-07-15

Je savais qu’il prenait en charge Node, mais apparemment Python aussi. Si c’est un scraper qui va nécessiter de la maintenance, il va falloir sérieusement réfléchir au choix du framework haha.

 
GN⁺ 2024-07-11
Avis Hacker News
  • Il est important de documenter les fonctionnalités existantes. Même la meilleure plateforme de web scraping ne sert à rien si seuls ses auteurs peuvent la comprendre

    • Par exemple, il est difficile de comprendre la signification de tiered_proxy_urls: list[list[str]] | None = None
    • Les exemples devraient montrer comment trouver et télécharger toutes les données, y compris des tableaux .csv et .xlsx
    • N’importe qui peut simplement récupérer du texte et chercher des URL
    • Il faut des exemples qui parsèrent 1000 éléments différents et obtiennent 3 à 5 éléments via différents endpoints
    • On ne sait pas clairement si cet outil est un framework ou un outil d’automatisation
    • Je me demande s’il prend en charge les protocoles d’opt-out du web scraping, comme Robots.txt, les en-têtes HTTP et les balises de contenu. C’est particulièrement important depuis la directive DSM de l’UE
  • Merci à Apify/Crawlee. En tant qu’utilisateur de longue date de Node.js, c’est la bibliothèque qui a le mieux fonctionné pour moi

  • J’ai découvert Crawlee en cherchant une stack pour un projet. Je voulais une bibliothèque Python, mais j’ai finalement utilisé Crawlee en Typescript et terminé le projet en une semaine

    • L’API est bien meilleure que toutes les API de scraping Python que j’ai utilisées jusqu’à présent
    • L’intégration avec Playwright rend l’expérience de programmation très confortable
    • Cela fonctionne bien pour les sites à rendu frontend et pour capturer des réponses XHR modifiées
    • Je prévois de passer à l’échelle avec la plateforme Apify
  • Je me demande en quoi c’est différent de Scrapy

  • Je me demande quelle serait la raison de migrer depuis une autre bibliothèque. J’ai construit mon propre crawler, mais je n’ai rien trouvé de particulièrement unique

  • Le code Python moderne a l’air sympa

    • Dans l’exemple de code, const data = await crawler.get_data() ressemble à du Javascript. On dirait qu’il manque un underscore
  • Je suggère de reprendre davantage d’extraits de code issus des cas de test comme exemples dans la documentation. Bon travail

  • Les outils de scraping sont toujours les bienvenus. Je compte l’essayer pour un projet personnel. Grâce à l’IA, le scraping ressemble aujourd’hui à la vente de pelles pendant une ruée vers l’or