Scraper une page web avec Scrapy
Scrapy est un framework Python puissant pour le web scraping, conçu pour extraire des données à grande échelle à partir de pages web. Contrairement à BeautifulSoup, Scrapy permet d’effectuer des tâches de scraping de manière plus structurée et optimisée, en offrant des fonctionnalités avancées comme la gestion automatique des requêtes, la gestion des sessions et des cookies, ainsi que le suivi des liens entre pages. Pour scraper une page avec Scrapy, vous devez créer un « Spider » qui définit comment naviguer sur un site et quels éléments extraire. Scrapy est particulièrement adapté pour des projets de scraping à grande échelle, où la performance et l’efficacité sont cruciales.
Fonctions :
-
scrapy.Spider
Scrapy est un framework d'extraction de données (scraping) qui permet de récupérer des informations depuis des pages web de manière plus structurée et performante. L'un des composants principaux est le Spider, qui définit les règles pour explorer les pages et extraire les données.
Importation :
import scrapy
Attributs :
Paramètre Description name
Nom du Spider. Il sert à identifier le Spider dans le projet. start_urls
Liste des URL de départ pour commencer l'extraction. allowed_domains
Liste des domaines autorisés pour éviter de scraper d'autres sites. parse
Méthode appelée pour traiter la réponse d'une requête HTTP. C'est ici que l'extraction des données est définie. Exemple de code :
import scrapy class MySpider(scrapy.Spider): name = 'my_spider' start_urls = ['https://www.example.com'] def parse(self, response): # Extraire tous les liens de la page links = response.css('a::attr(href)').getall() # Affichage des liens for link in links: yield {'link': link} # Suivi des liens internes pour un scraping plus profond for link in links: if link.startswith('http'): yield response.follow(link, self.parse)
Explication du code :
- Importation : Le module
scrapy
est importé. - Création du Spider : Un Spider est défini comme une sous-classe de
scrapy.Spider
. Le nom du Spider est défini parname
, qui est une chaîne d'identification. - Définition des URL de départ :
start_urls
est une liste contenant les URL à partir desquelles le Spider commencera son exploration. - Méthode
parse
: La méthodeparse
est responsable de l'extraction des données. Dans cet exemple, on utilise le sélecteur CSS (response.css
) pour extraire tous les liens (<a href>
). Ces liens sont ensuite renvoyés avecyield
. - Suivi des liens : Pour un scraping plus profond, les liens trouvés sont suivis avec
response.follow
, qui enverra une nouvelle requête HTTP pour scraper les pages liées.
Utilisation de Scrapy :
- Ce code doit être exécuté dans un projet Scrapy créé avec
scrapy startproject project_name
. - Une fois le projet configuré, tu peux exécuter ton Spider avec la commande suivante dans le terminal:
Ce bloc de code permet de scraper une page avec Scrapy, en extrayant les liens présents et en suivant ceux-ci pour un scraping supplémentaire.
- Importation : Le module