Retour au blog
Les techniques de web scraping
Suciu Dan13 décembre 20229 minutes de lecture

Exploration du Web avec Python : un guide détaillé sur la manière d'extraire des données avec Python

Exploration du Web avec Python : un guide détaillé sur la manière d'extraire des données avec Python

Robot d'indexation : qu'est-ce que c'est ?

Robot d'indexation : qu'est-ce que c'est ?

Le web scraping et le web crawling sont deux concepts distincts mais étroitement liés. Le web crawling a toujours été un élément crucial du web scraping, car les URL traitées par le code du web scraper ne fonctionnent que lorsque la logique du crawler les trouve.

Les robots d'indexation disposent d'une liste d'URL à visiter, appelée « seed ». Le robot d'indexation suit et localise les liens dans le document HTML de chaque URL, filtre et trie tous les liens en fonction de certains facteurs, puis ajoute les nouvelles URL à une file d'attente.

Il extrait certaines données spécifiques du Web ou l'ensemble des balises HTML et des données, qui sont ensuite traitées par un pipeline unique.

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

Source :

Classification des robots d'indexation

Classification des robots d'indexation

En fonction de leur structure et de la technologie utilisée, les robots d'indexation peuvent être classés dans les catégories suivantes : robots d'indexation du Web profond, robots d'indexation incrémentiels, robots d'indexation ciblés et robots d'indexation généraux.

Les robots d'indexation et leur flux de travail fondamental

Les robots d'indexation et leur flux de travail fondamental Close-up photo of HTML code on a screen with the words

Source :

Un robot d'indexation général suit le processus de base suivant :

Obtenir la première URL. Le premier élément, l'URL initiale, est le point d'entrée du robot d'indexation, qui vous relie et vous dirige vers la page Web à indexer.

Lors de l'exploration de la page Web, vous devez extraire le contenu HTML de la page, puis appliquer la méthode d'analyse ou des analyseurs HTML pour extraire les URL de toutes les pages liées à cette page Web particulière.

Placez toutes ces URL dans une file d'attente. Parcourez cette file d'attente et lisez et analysez les URL une par une.

Ensuite, explorez la page Web correspondante pour chaque URL et répétez les étapes mentionnées ci-dessus.

Enfin, vérifiez si la condition d'arrêt est remplie. Si elle n'est pas définie, le robot d'indexation continuera à explorer jusqu'à ce qu'il ne parvienne plus à obtenir de nouvelle URL.

Exploration Web : quelle préparation de l'environnement devez-vous effectuer ?

Exploration Web : quelle préparation de l'environnement devez-vous effectuer ?
  • Assurez-vous d'installer des navigateurs tels que Chrome, Internet Explorer ou Safari dans votre environnement.
  • Commencez par télécharger et installer le langage de programmation Python.
  • Ensuite, téléchargez un éditeur de code adapté, tel que Visual Studio Code.
  • Commencez à installer les fichiers Python requis. Par exemple, Pip est un outil de gestion Python qui vous aide à trouver, télécharger, installer et même désinstaller des paquets Python.

Stratégies de crawling Web à connaître

Stratégies de crawling Web à connaître Close-up photo of programming code on a screen with red and blue syntax highlighting

En général, les robots d'indexation n'explorent qu'un sous-ensemble de pages web en fonction du budget d'indexation. Ce budget peut correspondre au nombre maximal de pages par niveau de profondeur, par domaine ou par durée d'exécution.

Les sites Web connus proposent un fichier robots.txt pour identifier et afficher les sections du site Web dont l'exploration est interdite à tout agent utilisateur. Le document XML sitemap.xml est l'exact opposé du fichier robots.txt, car il répertorie toutes les pages pouvant être explorées.

Voici quelques-uns des cas d'utilisation les plus courants des robots d'indexation :

Cas d'utilisation 1 :

Cas d'utilisation 1 :

Les moteurs de recherche tels que Yandex Bot, Bingbot, Googlebot, etc., extraient tous les documents HTML d'un segment Web majeur. Les données extraites sont ensuite indexées afin de les transformer en données consultables.

Cas d'utilisation 2 :

Cas d'utilisation 2 :

Outre la collecte de code HTML, les logiciels d'analyse SEO collectent également des métadonnées telles que l'objet de réponse, le temps de réponse et le code d'état afin de détecter les pages Web inaccessibles et les liens au sein d'un ensemble de domaines pour extraire les backlinks.

Cas d'utilisation 3 :

Cas d'utilisation 3 :

Un site web de commerce électronique fait l'objet d'une exploration via des outils de surveillance des prix afin de détecter les pages web des produits et de collecter des métadonnées, principalement le prix. Par la suite, des visites périodiques sont effectuées sur les pages produits du site web de commerce électronique.

Cas d'utilisation 4 :

Cas d'utilisation 4 :

Un référentiel ouvert d'informations ou de données de robots d'indexation est géré et conservé par Common Crawl. Par exemple, 2,71 milliards de pages web étaient stockées dans les archives en octobre 2020.

Développer un robot d'indexation web de base en Python à partir de zéro

Développer un robot d'indexation web de base en Python à partir de zéro Diagram of a web scraping workflow showing browser requests, a scraping application, and a database

Source :

Pour développer un robot d'indexation de base dans un fichier Python, vous aurez besoin d'au moins une bibliothèque pour télécharger les balises HTML à partir d'URL et d'une bibliothèque d'analyse HTML pour collecter les liens.

La communauté Python propose des bibliothèques standard telles que html.parser pour l'analyse du HTML et urllib pour effectuer des requêtes HTTP. Sur GitHub, vous pouvez trouver un exemple de robot d'indexation Python développé uniquement à l'aide de ces bibliothèques standard.

Les outils de développement Python standard pour les méthodes d'analyse HTML et les requêtes ne sont pas très conviviaux pour les développeurs.

D'autres bibliothèques bien connues, telles que la bibliothèque requests et BeautifulSoup, offrent une expérience de développement améliorée.

Pour mieux comprendre, revoyez les points mentionnés plus haut dans cette section et suivez un ensemble défini de codes source HTML.

En général, le code ci-dessus est simple. Cependant, plusieurs défis en matière d'ergonomie et de performances doivent être résolus avant de procéder à l'exploration d'un site web entier et à l'extraction complète des données.

  • Le robot d'indexation est généralement lent et manque d'équilibre. Il faut généralement environ une seconde à un robot d'indexation pour explorer une URL particulière.
  • Chaque fois qu'un robot d'indexation envoie une requête, il se place dans la file d'attente pour la résolution de la requête, et aucune tâche n'est effectuée entre-temps.
  • Il n'y a pas d'option de nouvelle tentative pour la logique de téléchargement des URL. La file d'attente des URL n'est pas une véritable file d'attente et s'avère inefficace lorsqu'elle comporte de nombreuses URL.
  • La logique d'extraction de liens ne prend pas en charge le filtrage des URL par domaine ni le filtrage des requêtes vers des fichiers statiques, ne gère pas les URL commençant par un hashtag (#) et ne prend pas en charge la normalisation des URL via la suppression des paramètres de la chaîne de requête de l'URL.
  • Le robot d'indexation ignore le fichier robots.txt et ne s'identifie ni ne se détecte.

Voyons maintenant pourquoi vous devriez installer Scrapy et comment il facilite plus que jamais le crawling web personnalisé.

Exploration du Web via Python

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

Source :

Scrapy est l'un des paquets Python de scraping et de crawling Web les plus connus, bénéficiant d'une excellente note globale sur Github.

L'un des principaux avantages de Scrapy est que les requêtes sont organisées et traitées de manière asynchrone. Cela signifie que Scrapy peut envoyer une nouvelle requête avant que la précédente ne soit terminée ou effectuer une autre opération entre les deux.

Scrapy peut également gérer plusieurs requêtes simultanées, mais peut aussi être configuré pour respecter les sites web grâce à des paramètres personnalisés.

Scrapy est doté d'une architecture composée de plusieurs éléments web. En général, vous utiliserez au moins deux classes différentes : la classe Spider et la classe Pipeline.

Le web scraping peut être considéré comme un processus ETL ; ici, il vous suffit d'extraire les données de l'ensemble du code HTML et du Web. Bien sûr, vous devrez charger les données extraites sur votre espace de stockage personnel.

Les araignées Scrapy extraient les données et les pipelines assurent leur chargement transparent sur votre propre espace de stockage. Vous pouvez observer la transformation à la fois dans les pipelines et les araignées.

Il est toutefois conseillé de configurer un pipeline Scrapy personnalisé pour convertir chaque élément séparément. Grâce à cette approche, l'impossibilité de traiter un élément n'affectera pas les autres.

En outre, vous pouvez également intégrer le spider Scrapy et le middleware de téléchargement entre les composants.

Présentation de l'architecture Scrapy

Présentation de l'architecture Scrapy Diagram of Scrapy architecture showing spiders, engine, scheduler, downloader, and item pipelines

Si vous avez déjà utilisé Scrapy, vous savez que les web scrapers sont définis comme une classe dérivée de la classe Spider de base et qui utilise une méthode de parsing pour traiter toutes les réponses.

Installez Scrapy, qui propose également de nombreuses classes de spider génériques, notamment SitemapSpider, CSVFeedSpider, XMLFeedSpider et CrawlSpider.

La classe CrawlSpider est également une branche de la classe de base Scrapy Spider qui offre un attribut « rules » supplémentaire pour définir les méthodes de crawl d'un site web spécifique.

Chaque règle utilise un LinkExtractor pour identifier les liens à extraire de chaque page web.

Développement d'un exemple de crawler Scrapy pour IMDb

Développement d'un exemple de crawler Scrapy pour IMDb

Avant de tenter d'explorer le site web IMDb, identifiez les URL autorisées en consultant le fichier robots.txt d'IMDb.

Seules 26 routes ou chemins sont interdits par le fichier robots.txt pour tous les agents utilisateurs. Scrapy lit et vérifie le fichier robots.txt au préalable et s'y conforme lorsque le paramètre ROBOTSTXT_OBEY est défini sur true.

Cela s'applique à tous les projets créés à l'aide de la commande Scrapy startproject.

Exploration Web à grande échelle

Exploration Web à grande échelle

Par défaut, pour un site web comme IMDb, les robots d'exploration de Scrapy peuvent explorer environ 600 pages par minute. Un seul robot met généralement plus de 50 jours pour explorer environ 45 millions de pages.

Pour explorer divers sites web, il est conseillé de déployer des robots d'exploration individuels pour chaque groupe de sites web.

Le crawling Web avec un programme Python est facile grâce à la configuration de Scrapy

Le crawling Web avec un programme Python est facile grâce à la configuration de Scrapy

Vous pouvez créer le code source d'un robot d'exploration basé sur un framework Python de deux manières. La première consiste à utiliser des bibliothèques tierces pour télécharger les URL des pages web, et la seconde à analyser le code HTML à l'aide d'un robot d'exploration conçu via un framework de robot d'exploration populaire.

Scrapy est un excellent framework de crawling que vous pouvez facilement étendre via votre code personnalisé. Cependant, vous devez connaître tous les liens où vous pouvez intégrer votre propre code ainsi que les paramètres de chaque composant.

Une configuration correcte et fluide de Scrapy devient d'autant plus cruciale lorsque vous explorez des sites web composés de millions de pages. Si vous souhaitez approfondir vos connaissances en matière d'exploration web, il est conseillé de choisir un site web réputé et de commencer à l'explorer.

Effectuez un crawling et un scraping Web fluides à l'aide de WebScrapingAPI

Effectuez un crawling et un scraping Web fluides à l'aide de WebScrapingAPI WebScrapingAPI page screenshot describing data extraction and proxy rotation features with icons of popular sites

Source :

Bien qu'il existe de nombreux robots d'exploration open source, ceux-ci ne sont pas toujours capables d'explorer des pages web et des sites web complexes à grande échelle.

Vous devrez ajuster et modifier le code sous-jacent pour vous assurer qu'il fonctionne correctement sur la page visée. De plus, il se peut qu'il ne fonctionne pas avec tous les logiciels d'exploitation de votre environnement. Un autre problème pouvant survenir concerne les exigences en matière de puissance de calcul et de vitesse.

Pour surmonter ces obstacles, WebScrapingAPI vous permet d'explorer plusieurs pages indépendamment du langage de programmation, de vos appareils ou de vos plateformes, et conserve le contenu dans des systèmes de bases de données ou dans des formats de fichiers simples, compréhensibles et lisibles tels que le .csv.

En matière d'exploration de données sur le Web et d'exécution de fonctionnalités de scraping, WebScrapingAPI simplifie plus que jamais les choses.

Pour en savoir plus sur nos capacités de web scraping et de crawling, rendez-vous sur notre site web et contactez-nous. Pour obtenir des informations détaillées sur nos tarifs, cliquez ici

À propos de l'auteur
Suciu Dan, cofondateur @ WebScrapingAPI
Suciu Dancofondateur

Suciu Dan est le cofondateur de WebScrapingAPI et rédige des guides pratiques destinés aux développeurs sur le web scraping avec Python et Ruby, ainsi que sur les infrastructures de proxy.

Commencez à créer

Prêt à faire évoluer votre système de collecte de données ?

Rejoignez plus de 2 000 entreprises qui utilisent WebScrapingAPI pour extraire des données Web à l'échelle de l'entreprise, sans aucun coût d'infrastructure.