En matière d'acquisition de données, les web crawlers sont devenus un outil indispensable. Cependant, pour ceux qui débutent dans l’apprentissage et la maîtrise des techniques de web scraping, choisir les bons outils et frameworks peut être déroutant. Parmi les nombreux outils d’exploration Web, Scrapy est un outil très populaire. Scrapy est un framework Python open source qui offre une approche flexible du traitement et de l'extraction de données.
Dans cet article, je vais vous présenter les bases de Scrapy et vous expliquer comment créer un robot d'exploration Web simple dans Scrapy.
1. Premiers pas avec Scrapy
Avant de commencer, vous devez d'abord installer Scrapy . L'installation de Scrapy est très simple, il suffit d'exécuter la commande suivante dans la ligne de commande :
pip install scrapy
Lors de la création d'un Projet Scrapy, vous pouvez utiliser la commande suivante :
scrapy startproject <project_name>
Cela créera un dossier nommé
Dans Scrapy, Spider est le composant principal que nous utilisons pour explorer les données. Spider définit comment commencer à demander des URL, comment suivre les liens, comment analyser les pages, etc. Dans Scrapy, nous pouvons utiliser la commande suivante pour créer un Spider :
scrapy genspider <spider_name> <domain_name>
Cela créera un nouveau Spider dans le projet et l'enregistrera dans le répertoire spiders. Vous pouvez définir les méthodes de requête et d'analyse dont nous avons besoin en éditant le Spider.
Il est très important de configurer le site Web d'exploration. Nous devons définir l'URL du site Web à explorer dans le fichier Spider et comment configurer la requête. Dans Scrapy, cette fonction peut être réalisée en écrivant la méthode start_requests. Cette méthode sera appelée lorsque le Spider démarrera et enverra une requête à partir d'une URL spécifique.
Dans Scrapy, l'analyse d'une page Web est l'étape la plus importante. Nous pouvons utiliser des sélecteurs XPath ou CSS pour analyser la page afin d'extraire les données requises. Dans le code Spider, vous pouvez écrire la méthode d'analyse et utiliser les outils ci-dessus pour analyser la page.
Enfin, nous devons stocker les données extraites dans une base de données ou un fichier. Dans Scrapy, vous pouvez utiliser Pipeline pour réaliser cette opération. Pipeline est un mécanisme de traitement des données. Il définit des méthodes spécifiques pour le nettoyage, le filtrage, la transformation, le stockage, la sortie des données, etc.
2. Un exemple simple
Ensuite, nous allons écrire un simple Spider et utiliser Scrapy pour récupérer les données des 250 meilleurs films Douban. Tout d'abord, créez un nouveau projet en utilisant la commande suivante dans la ligne de commande :
scrapy startproject tutorial
Allez dans le dossier du didacticiel et créez un Spider nommé douban_spider :
scrapy genspider douban_spider movie.douban.com
Ensuite, nous avons besoin de Configurer cette araignée pour demander des pages et analyser des pages Web. Ajoutez le code suivant au fichier Spider :
import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["movie.douban.com"] start_urls = [ "https://movie.douban.com/top250" ] def parse(self, response): for sel in response.xpath('//div[@class="info"]'): title = sel.xpath('div[@class="hd"]/a/span/text()').extract() yield {'title': title}
Dans le code ci-dessus, nous définissons d'abord le nom du Spider et le nom de domaine du site Web crawlé. Ensuite, nous avons défini les URL que nous souhaitions explorer et écrit la méthode d'analyse pour analyser la page et extraire les données dont nous avions besoin.
Pour chaque élément avec un attribut de classe "info", nous utilisons XPath pour extraire les éléments contenant le titre du film et renvoyer ces éléments à l'aide du mot-clé rendement.
Enfin, nous devons sauvegarder les données extraites. Un nouveau Pipeline peut être créé pour traiter et stocker les données extraites. Ce qui suit est un simple Pipeline qui enregistre les données extraites dans un fichier JSON :
import json class TutorialPipeline(object): def __init__(self): self.file = open('douban_top250.json', 'w') def process_item(self, item, spider): line = json.dumps(dict(item)) + " " self.file.write(line) return item def spider_closed(self, spider): self.file.close()
Enfin, nous devons configurer le Pipeline dans settings.py. Ajoutez simplement le code suivant dans ITEM_PIPELINES :
ITEM_PIPELINES = { 'tutorial.pipelines.TutorialPipeline': 100, }
Maintenant, nous avons écrit un simple Scrapy Spider et pouvons le démarrer en exécutant la commande suivante :
scrapy crawl douban
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!