Maison  >  Article  >  développement back-end  >  Comment utiliser Scrapy pour créer un programme d'exploration efficace

Comment utiliser Scrapy pour créer un programme d'exploration efficace

WBOY
WBOYoriginal
2023-08-02 14:33:13653parcourir

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.

  1. Structure de base du programme d'exploration

Le programme d'exploration de Scrapy se compose principalement des composants suivants :

  • Programme Crawler : définit comment explorer les pages, analyser leurs données et suivre les liens.
  • Pipeline de projet : responsable du traitement des données extraites de la page par le programme d'exploration et d'effectuer les traitements ultérieurs, comme les stocker dans une base de données ou les exporter vers un fichier, etc.
  • Middleware de téléchargement : responsable du traitement des demandes d'envoi et de l'obtention du contenu de la page. Il peut effectuer des opérations telles que les paramètres de l'agent utilisateur et la commutation IP du proxy.
  • Planificateur : Responsable de la gestion de toutes les demandes à récupérer et de leur planification selon certaines stratégies.
  • Téléchargeur : responsable du téléchargement du contenu de la page demandé et de son renvoi au programme d'exploration.
  1. Écrire un programme d'exploration

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.

  1. Configurer le pipeline de projet

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.

  1. Exécutez le programme d'exploration

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn