Comment utiliser Scrapy pour créer un programme d'exploration efficace
Avec l'avènement de l'ère de l'information, la quantité de données sur Internet continue d'augmenter et la demande d'obtention de grandes quantités de données augmente également. Et les robots d’exploration sont devenus l’une des meilleures solutions à ce besoin. En tant qu'excellent framework de robot d'exploration Python, Scrapy est efficace, stable et facile à utiliser, et est largement utilisé dans divers domaines. Cet article expliquera comment utiliser Scrapy pour créer un programme d'exploration efficace et donnera des exemples de code.
Le programme d'exploration de Scrapy se compose principalement des composants suivants :
Dans Scrapy, nous devons créer un nouveau projet d'exploration pour écrire notre programme d'exploration. Exécutez la commande suivante dans la ligne de commande :
scrapy startproject myspider
Cela créera un dossier de projet nommé "myspider" avec quelques fichiers et dossiers par défaut. Nous pouvons aller dans ce dossier et créer un nouveau robot :
cd myspider scrapy genspider example example.com
Cela créera un robot nommé "exemple" qui sera utilisé pour explorer les données du site Web "exemple.com". Nous pouvons écrire une logique de robot d'exploration spécifique dans le fichier "example_spider.py" généré.
Vous trouverez ci-dessous un exemple simple pour récupérer les titres d'actualité et les liens sur un site Web.
import scrapy class ExampleSpider(scrapy.Spider): name = 'example' allowed_domains = ['example.com'] start_urls = ['http://www.example.com/news'] def parse(self, response): for news in response.xpath('//div[@class="news-item"]'): yield { 'title': news.xpath('.//h2/text()').get(), 'link': news.xpath('.//a/@href').get(), } next_page = response.xpath('//a[@class="next-page"]/@href').get() if next_page: yield response.follow(next_page, self.parse)
Dans le code ci-dessus, nous définissons une classe de robot nommée "ExampleSpider", qui contient trois attributs : name représente le nom du robot, Allowed_domains représente le nom de domaine autorisé à explorer le site Web et start_urls représente l'URL de départ. . Ensuite, nous avons réécrit la méthode parse, qui analyse le contenu de la page Web, extrait les titres et les liens des actualités et renvoie les résultats en utilisant le rendement.
Dans Scrapy, nous pouvons canaliser les données analysées via le pipeline de projet. Les données peuvent être stockées dans une base de données, écrites dans un fichier ou traitées ultérieurement.
Ouvrez le fichier "settings.py" dans le dossier du projet, recherchez-y l'élément de configuration ITEM_PIPELINES et décommentez-le. Ajoutez ensuite le code suivant :
ITEM_PIPELINES = { 'myspider.pipelines.MyPipeline': 300, }
Cela activera la classe de pipeline personnalisée "my spider.pipelines.MyPipeline" et spécifiera une priorité (plus le nombre est bas, plus la priorité est élevée).
Ensuite, nous devons créer une classe pipeline pour traiter les données. Créez un fichier appelé "pipelines.py" dans le dossier du projet et ajoutez le code suivant :
import json class MyPipeline: def open_spider(self, spider): self.file = open('news.json', 'w') def close_spider(self, spider): self.file.close() def process_item(self, item, spider): line = json.dumps(dict(item)) + " " self.file.write(line) return item
Dans cet exemple, nous définissons une classe de pipeline appelée "MyPipeline" avec trois méthodes : open_spider , close_spider et process_item. Dans la méthode open_spider, nous ouvrons un fichier pour stocker les données. Dans la méthode close_spider, nous fermons le fichier. Dans la méthode process_item, nous convertissons les données au format JSON et les écrivons dans le fichier.
Après avoir terminé l'écriture du programme d'exploration et du pipeline de projet, nous pouvons exécuter la commande suivante dans la ligne de commande pour exécuter le programme d'exploration :
scrapy crawl example
Cela démarrera le robot d'exploration nommé "exemple" et démarrera ramper Obtenir des données. Les données analysées seront traitées telles que nous les avons définies dans la classe pipeline.
Ce qui précède est le processus de base et un exemple de code pour utiliser Scrapy pour créer un programme d'exploration efficace. Bien entendu, Scrapy propose également de nombreuses autres fonctionnalités et options qui peuvent être ajustées et étendues en fonction des besoins spécifiques. J'espère que cet article pourra aider les lecteurs à mieux comprendre et utiliser Scrapy et à créer des programmes d'exploration efficaces.
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!