Crawlee Python - Bibliothèque de web scraping et d'automatisation de navigateur
Aperçu du projet
Crawlee est une bibliothèque de web scraping et d'automatisation de navigateur spécialement conçue pour Python, permettant de construire des robots d'exploration fiables. Elle permet d'extraire des données pour des applications d'IA, de LLM, de RAG ou de GPT, et de télécharger des fichiers HTML, PDF, JPG, PNG et autres depuis des sites web. Développé par Apify, ce projet est sa bibliothèque de web scraping open source, basée sur BeautifulSoup et Playwright, adoptant une approche intégrée du web scraping.
Caractéristiques principales
Fonctionnalités de base
- Support multi-moteurs: Fonctionne avec BeautifulSoup, Playwright et HTTP natif
- Modes flexibles: Supporte les modes avec et sans interface graphique (headless)
- Rotation de proxy: Fonctionnalité de rotation de proxy intégrée
- Téléchargement de fichiers: Supporte le téléchargement de fichiers de différents formats tels que HTML, PDF, JPG, PNG, etc.
- Optimisation de l'intégration de l'IA: Spécialement optimisé pour l'extraction de données pour les applications d'IA, de LLM, de RAG et de GPT
Avantages techniques
- Indication de type: Conception moderne, incluant des indications de type Python, aidant à la détection précoce des erreurs
- Stable et fiable: Construit par des développeurs professionnels qui explorent des millions de pages par jour
- Facile à utiliser: Permet de basculer facilement entre différentes bibliothèques de scraping en fonction des besoins
- Gestion des erreurs: Mécanismes robustes de gestion des erreurs et de nouvelles tentatives intégrés
Architecture technique
Pile technologique sous-jacente
# Dépendances principales
- BeautifulSoup: Analyse statique de HTML
- Playwright: Traitement des pages avec rendu JavaScript dynamique
- Client HTTP: Support des requêtes HTTP natives
Capacités d'intégration
- Intégration de la plateforme Apify: Intégration transparente avec la plateforme Apify
- Diverses techniques de scraping: Supporte diverses techniques de scraping, de l'analyse statique de HTML au rendu JavaScript dynamique
Cas d'utilisation
Principaux domaines d'application
- Collecte de données pour l'IA: Collecte de données d'entraînement pour l'apprentissage automatique et les applications d'IA
- Systèmes RAG: Fournit des sources de données pour les systèmes de génération augmentée par la récupération (Retrieval-Augmented Generation)
- Applications GPT: Fournit des données en temps réel pour diverses applications GPT
- Surveillance de contenu: Surveillance des changements de contenu des sites web
- Analyse de données: Collecte de données pour l'analyse commerciale
Comparaison avec les concurrents
Parmi les deux principales options open source de Python, Scrapy et Crawlee, Apify a choisi la seconde, estimant que les débutants la préféreraient car elle permet de créer des robots d'exploration avec moins de code et moins de temps de lecture.
État du projet
Informations de publication
- Licence open source: Entièrement open source et gratuit
- Support linguistique: Version Python (également disponible en version Node.js)
- Date de publication: La version Python a attiré beaucoup d'attention quelques semaines seulement après sa publication
- État de la maintenance: Maintenance active
Réaction de la communauté
- A reçu une large attention sur GitHub
- La version Python a été lancée en raison du succès de la version JavaScript et de la demande de la communauté Python
- A reçu des commentaires positifs dans les communautés techniques telles que Hacker News
Installation et démarrage rapide
Méthode d'installation
pip install crawlee
Exemple d'utilisation de base
from crawlee import BeautifulSoupCrawler
# Créer une instance de robot d'exploration
crawler = BeautifulSoupCrawler()
# Définir le gestionnaire de requêtes
@crawler.router.default_handler
async def handler(context):
# Extraire les données
data = {
'title': context.soup.find('title').get_text(),
'url': context.request.url
}
# Sauvegarder les données
await context.push_data(data)
# Exécuter le robot d'exploration
await crawler.run(['https://example.com'])
Fonctionnalités avancées
Support de proxy
# Configurer la rotation de proxy
crawler = BeautifulSoupCrawler(
proxy_configuration={
'proxy_urls': ['http://proxy1:8000', 'http://proxy2:8000']
}
)
Gestion des erreurs et nouvelles tentatives
# Configuration des nouvelles tentatives automatiques
crawler = BeautifulSoupCrawler(
max_requests_per_crawl=1000,
request_timeout=30,
retry_on_blocked=True
)
Conclusion
Crawlee Python est une bibliothèque de web scraping moderne et puissante, particulièrement adaptée aux scénarios nécessitant la collecte de données pour les applications d'IA. Elle combine les avantages de plusieurs technologies de scraping éprouvées, offre une API simple et des fonctionnalités puissantes, ce qui en fait un excellent choix pour les développeurs Python effectuant du web scraping. Qu'il s'agisse d'une simple extraction de données ou de tâches complexes d'automatisation de navigateur, Crawlee peut fournir une solution fiable.
