Que sont les robots d'indexation ?
Il existe de nombreux moteurs de recherche, et nous les utilisons tous. Leurs services sont faciles à utiliser : il suffit de poser une question, et ils parcourent tout le Web pour vous trouver une réponse. En coulisses, c'est le robot d'indexation Googlebot de Google qui fait le succès du moteur de recherche de Google.
En parcourant le Web à la recherche de pages correspondant à vos mots-clés, les robots d'indexation aident les moteurs de recherche à cataloguer ces pages et à les renvoyer ultérieurement grâce à l'indexation. Les moteurs de recherche s'appuient sur les robots d'indexation pour collecter des informations sur les sites Web, notamment les URL, les hyperliens, les balises méta et les articles, ainsi que pour analyser le code HTML.
Grâce à la capacité du robot à suivre ce qu’il a déjà consulté, vous n’avez pas à craindre qu’il reste bloqué indéfiniment sur la même page web. L’Internet public et la sélection de contenu posent plusieurs défis aux robots d’indexation. Chaque jour, les sites web existants publient des dizaines de nouvelles informations, sans parler du nombre de nouveaux sites web qui apparaissent quotidiennement.
Au final, cela les obligerait à parcourir des millions de pages et à actualiser leurs index en permanence. Les systèmes qui analysent le contenu des sites web dépendent d'eux, ils sont donc essentiels.
Les robots d'indexation sont donc importants, mais pourquoi en parler ? Parce que nous allons créer notre propre bot pour faciliter le processus d'extraction de données. Ainsi, nous pourrons compter sur lui pour récupérer les URL au lieu de les saisir manuellement dans le scraper. Encore plus d'automatisation, youpi !
Installation
Maintenant que nous avons une compréhension de base des robots d'indexation, vous vous demandez peut-être à quoi tout cela ressemble en pratique. Eh bien, plongeons-nous dans le vif du sujet !
Tout d'abord, nous devons configurer notre environnement de travail. Assurez-vous que votre machine répond aux prérequis suivants :
- Python 3 ;
- Un IDE Python. Ce guide utilisera Visual Studio Code, car il est léger et ne nécessite aucune configuration supplémentaire. Le code est toutefois indépendant de l'IDE, vous pouvez donc choisir celui avec lequel vous êtes le plus à l'aise ;
Enfin, nous aurons besoin d’une clé API. Vous pouvez créer un compte WSA gratuit, qui vous donnera droit à 5 000 appels API pendant les 14 premiers jours. Une fois inscrit, rendez-vous simplement sur votre tableau de bord, où vous trouverez votre clé API et d’autres ressources utiles.

Développement du crawler
Parfait, nous disposons des outils nécessaires, nous sommes donc sur le point de commencer à créer notre crawler. Mais comment allons-nous l'utiliser ? Sa mise en œuvre peut varier en fonction de notre objectif final.
Choisissez un site web et examinez le code HTML
Pour ce tutoriel, nous avons choisi un site de commerce électronique qui vend des produits zéro déchet destinés à différents usages. Nous allons parcourir toutes les pages, extraire la liste des produits de chaque page et enfin stocker les données dans un fichier CSV pour chaque page.
Pour ce faire, nous devons d'abord examiner la structure de la page et définir notre stratégie. Cliquez avec le bouton droit n'importe où sur la page, puis sur « Inspecter l'élément », et la « Console de développement » s'affichera. Vous pouvez y voir le document HTML du site web, qui contient toutes les données dont nous avons besoin.

Créer le robot d'indexation
Bon, nous pouvons maintenant écrire du code !
Commencez par ouvrir une fenêtre de terminal dans votre IDE et exécutez la commande suivante, qui installera BeautifulSoup, une bibliothèque qui nous aidera à extraire les données du code HTML :
> pip install beautifulsoup4
Créez ensuite un dossier nommé « products ». Cela vous aidera à organiser et à stocker les résultats du scraping dans plusieurs fichiers CSV.
Enfin, créez le fichier « crawler.py ». C'est là que nous allons écrire tout notre code et notre logique de crawling. Une fois que nous avons terminé, nous pouvons exécuter le fichier à l'aide de la commande suivante :
> py crawler.py
Passons maintenant à l'importation des bibliothèques dont nous avons besoin, puis définissons quelques variables globales :
import requests
from bs4 import BeautifulSoup
import csv
BASE_URL = "https://www.shopetee.com"
SECTION = "/collections/all-collections"
FULL_START_URL = BASE_URL + SECTION
ENDPOINT = "https://api.webscrapingapi.com/v1/"
API_KEY = "API_KEY"
Définissons maintenant le point d'entrée de notre crawler :
def crawl(url, filename):
page_body = get_page_source(url, filename)
soup = BeautifulSoup(page_body, 'html.parser')
start_crawling(soup, filename)
crawl(FULL_START_URL, 'etee-page1.txt')
Nous implémentons la fonction crawl, qui extraira les documents HTML via notre procédure get_page_source. Elle créera ensuite l’objet BeautifulSoup qui facilitera notre analyse et appellera la fonction start_crawling, qui commencera à parcourir le site web.
def get_page_source(url, filename):
params = {
"api_key": API_KEY,
"url": url,
"render_js": '1'
}
page = requests.request("GET", ENDPOINT, params=params)
soup = BeautifulSoup(page.content, 'html.parser')
body = soup.find('body')
file_source = open(filename, mode='w', encoding='utf-8')
file_source.write(str(body))
file_source.close()
return str(body)
Comme indiqué précédemment, la fonction get_page_source utilisera WebScrapingAPI pour récupérer le contenu HTML du site web et l'écrira dans un fichier texte dans la section <body>, car c'est celle qui contient toutes les informations qui nous intéressent.
Maintenant, prenons un peu de recul et voyons comment atteindre nos objectifs. Les produits sont organisés en pages, nous devons donc accéder à chaque page à plusieurs reprises pour tous les extraire.
Cela signifie que notre robot d'indexation suivra des étapes récursives tant qu'il y aura des pages disponibles. Pour traduire cette logique en code, nous devons examiner comment le code HTML décrit ces conditions.
Si vous revenez à la console de développement, vous pouvez voir que chaque numéro de page est en fait un lien vers une nouvelle page. De plus, étant donné que nous sommes sur la première page et qu'il n'y en a pas d'autre avant celle-ci, la flèche gauche est désactivée.
L'algorithme suivant doit donc :
- Accéder à la page ;
- Extraire les données (nous implémenterons cela à l'étape suivante) ;
- Trouver le conteneur de pagination dans le document HTML ; Vérifier si la flèche « Page suivante » est désactivée, s'arrêter si c'est le cas et, si ce n'est pas le cas, récupérer le nouveau lien et appeler la fonction de crawl pour la nouvelle page.
def start_crawling(soup, filename):
extract_products(soup, filename)
pagination = soup.find('ul', {'class': 'pagination-custom'})
next_page = pagination.find_all('li')[-1]
if next_page.has_attr('class'):
if next_page['class'] == ['disabled']:
print("You reached the last page. Stopping the crawler...")
else:
next_page_link = next_page.find('a')['href']
next_page_address = BASE_URL + next_page_link
next_page_index = next_page_link[next_page_link.find('=') + 1]
crawl(next_page_address, f'etee-page{next_page_index}.txt')Extraire les données et les exporter au format CSV
Enfin, voyons comment extraire les données dont nous avons besoin. Jetons un autre coup d’œil au document HTML : nous pouvons voir que les noms de classes nous permettent d’accéder aux informations utiles.
Nous allons extraire le nom du produit, sa note, le nombre d'avis et son prix, mais vous pouvez aller aussi loin que vous le souhaitez.
Vous vous souvenez du dossier « products » que nous avons créé précédemment ? Nous allons maintenant créer un fichier CSV pour exporter les données que nous récupérons sur chaque page. Ce dossier nous aidera à les organiser.
def extract_products(soup, filename):
csv_filename = filename.replace('.txt', '.csv')
products_file = open(f'products/{csv_filename}', mode='a', encoding='utf-8', newline='')
products_writer = csv.writer(products_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
products_writer.writerow(['Title', 'Rating', 'Reviews', 'Price on sale'])
products = soup.find_all('div', {'class': 'product-grid-item'})
for product in products:
product_title = product.find('div', {'class': 'item-title'}).getText().strip()
product_rating = product.find('span', {'class': 'jdgm-prev-badge__stars'})['data-score']
product_reviews = product.find('span', {'class': 'jdgm-prev-badge__text'}).getText().strip()
product_price_on_sale = product.find('span', {'class': 'money'}).getText()
products_writer.writerow([product_title, product_rating, product_reviews, product_price_on_sale])
Une fois le programme exécuté, vous pouvez voir toutes les informations extraites dans les fichiers nouvellement créés.

Conclusion
Et c'est à peu près tout ! Nous venons de créer notre propre robot d'indexation en utilisant BeautifulSoup de Python et WebScrapingAPI en moins de 100 lignes de code. Bien sûr, cela peut varier en fonction de la complexité de votre tâche, mais c'est un très bon résultat pour un robot d'indexation qui parcourt les pages d'un site web.
Pour ce guide, nous avons utilisé l'essai gratuit de WebScrapingAPI, qui offre 5 000 appels API pendant les 14 premiers jours, ce qui est largement suffisant pour créer un robot puissant.
Cela nous a permis de nous concentrer uniquement sur la logique du crawler sans avoir à nous soucier des différents défis liés au web scraping. Cela nous a fait gagner du temps, de l'énergie et nous a évité des coûts considérables, comme l'utilisation de nos propres proxys, pour ne citer que quelques-uns des avantages que vous pouvez obtenir en utilisant une API pour le web scraping.




