Maison  >  Article  >  développement back-end  >  Scrapy est une application de récupération de données fournie avec des modèles de robots d'exploration

Scrapy est une application de récupération de données fournie avec des modèles de robots d'exploration

WBOY
WBOYoriginal
2023-06-22 09:24:06737parcourir

Avec le développement continu de la technologie Internet, la technologie des robots d'exploration a également été largement utilisée. La technologie Crawler peut explorer automatiquement les données sur Internet et les stocker dans une base de données, ce qui facilite l'analyse et l'exploration de données. En tant que framework d'exploration très célèbre en Python, Scrapy est livré avec des modèles d'exploration courants, qui peuvent analyser rapidement les données sur le site Web cible et les enregistrer automatiquement dans une base de données locale ou cloud. Cet article explique comment utiliser le modèle d'analyseur de Scrapy pour analyser les données, ainsi que comment nettoyer, analyser et stocker les données pendant le processus d'analyse.

1. Introduction aux modèles de robots Scrapy

Scrapy est livré avec certains modèles de robots, notamment les modèles Spider de base, les modèles CrawlSpider et les modèles XmlFeedSpider. Le modèle Spider est le modèle de robot d’exploration le plus basique. Son avantage est qu’il a une large gamme d’applications et qu’il est facile à utiliser. Le modèle CrawlSpider est un modèle d'analyseur basé sur des règles qui peut analyser rapidement les liens à plusieurs niveaux et prend en charge les règles personnalisées. Le modèle XmlFeedSpider est un modèle de robot adapté au format XML. L'utilisation de ces modèles pour l'exploration des données peut réduire considérablement les difficultés de développement pour les programmeurs et améliorer l'efficacité de l'exploration.

2. Application de modèle d'exploration Scrapy

Ce qui suit est un exemple pratique pour illustrer comment utiliser le propre modèle Spider de Scrapy pour explorer les données. Le site Web cible que nous allons explorer est un site Web d'informations sur les films, et les dernières informations sur les films sont répertoriées sur la page d'accueil du site Web. Nous devons explorer le nom du film, le réalisateur, les acteurs, les notes et d'autres informations sur ce site Web et les enregistrer dans une base de données locale.

  1. Créer un projet Scrapy

Tout d'abord, vous devez ouvrir la fenêtre de ligne de commande, basculer vers le répertoire de travail cible, puis entrer la commande suivante :

scrapy startproject movies

Cette commande créera un projet Scrapy nommé films. répertoire du projet, contiendra un sous-répertoire nommé spiders, qui est utilisé pour placer les programmes d'exploration.

  1. Créer un modèle Spider

Dans le répertoire du projet, utilisez la commande suivante pour créer un Spider nommé movie_spider :

scrapy genspider movie_spider www.movies.com

Cette commande générera automatiquement un programme basé sur le modèle Spider, où www.movies.com représente le cible Le nom de domaine du site Web. Dans le répertoire spiders, un fichier nommé movie_spider.py apparaîtra avec le contenu suivant :

import scrapy

class MovieSpider(scrapy.Spider):
    name = 'movie_spider'
    allowed_domains = ['www.movies.com']
    start_urls = ['http://www.movies.com/']

    def parse(self, response):
        pass

Il s'agit du programme Spider le plus basique. Name représente le nom du robot d'exploration, Allowed_domains représente la liste des noms de domaine dont l'analyse est autorisée et start_urls représente la liste des URL de démarrage de l'exploration. Dans la méthode d'analyse, nous devons écrire du code pour l'analyse et la saisie des données.

  1. Capture et analyse de données

Nous devons écrire du code pour capturer et analyser les données du site Web cible à partir de l'objet de réponse. Pour le site Web d'informations sur les films que nous venons de mentionner, nous pouvons utiliser des sélecteurs XPath ou CSS pour localiser des éléments sur la page. En supposant que le nom du film est stocké dans un élément div avec la classe movie-name sur la page, nous pouvons alors utiliser le code suivant pour extraire tous les noms de films :

def parse(self, response):
    movies = response.xpath('//div[@class="movie-name"]/text()').extract()
    for movie in movies:
        yield {'name': movie}

Ici, nous utilisons la syntaxe XPath pour localiser tous les noms de film de classe de l'élément div et utilisez la méthode extract pour extraire le contenu du texte dans l'élément. Ensuite, nous utilisons une boucle for pour générer chaque nom de film comme sortie du générateur.

De même, nous pouvons localiser d'autres éléments qui nous intéressent via les sélecteurs XPath ou CSS. Par exemple, les informations sur le réalisateur et l'acteur peuvent être stockées dans un élément div avec le directeur de classe, et les informations de notation peuvent être stockées dans un élément div avec le taux de classe.

  1. Stockage de données

Dans le programme Spider, nous devons écrire du code pour enregistrer les données capturées dans une base de données locale ou cloud. Scrapy prend en charge la sauvegarde des données dans diverses bases de données différentes, notamment MySQL, PostgreSQL, MongoDB, etc.

Par exemple, nous pouvons utiliser la base de données MySQL pour enregistrer les informations sur les films. Dans le répertoire spiders, nous pouvons créer un fichier nommé mysql_pipeline.py, qui contient le code suivant :

import pymysql

class MysqlPipeline(object):
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='movie_db', charset='utf8')

    def process_item(self, item, spider):
        cursor = self.conn.cursor()
        sql = "INSERT INTO movie(name, director, actors, rate) VALUES(%s, %s, %s, %s)"
        cursor.execute(sql, (item['name'], item['director'], item['actors'], item['rate']))
        self.conn.commit()

    def __del__(self):
        self.conn.close()

Ce programme enregistrera les données d'implémentation dans la base de données MySQL, où movie_db est le nom de la base de données, et la table movie contiendra le nom , réalisateur, Quatre champs, acteurs et tarif, sont utilisés pour stocker le nom du film, le réalisateur, les acteurs et les informations de classification. La méthode process_item est utilisée pour enregistrer les éléments générés dans le programme Spider dans la base de données.

Pour utiliser le fichier mysql_pipeline.py, nous devons également ajouter la configuration suivante dans le fichier settings.py :

ITEM_PIPELINES = {
    'movies.spiders.mysql_pipeline.MysqlPipeline': 300
}

Ici, 'movies.spiders.mysql_pipeline.MysqlPipeline' spécifie l'emplacement et le nom de classe du mysql_pipeline. Fichier .py. Le nombre 300 indique la priorité du traitement des données. Plus le nombre est petit, plus la priorité est élevée.

  1. Exécutez le programme Scrapy

Dans le répertoire spiders, exécutez la commande suivante pour exécuter le programme Scrapy :

scrapy crawl movie_spider

Cette commande lancera le programme d'exploration nommé movie_spider pour commencer à explorer les données du site Web cible et à les stocker dans Base de données MySQL.

3.Résumé

Cet article explique comment utiliser les propres modèles d'exploration de Scrapy pour explorer les données, notamment le modèle Spider, le modèle CrawlSpider et le modèle XmlFeedSpider. Nous prenons un exemple pratique pour illustrer comment utiliser les modèles Spider pour capturer et analyser des données, et enregistrer les résultats dans une base de données MySQL. L'utilisation de Scrapy pour la capture de données peut considérablement améliorer l'efficacité et la qualité de la collecte de données, et fournir un support solide pour l'analyse ultérieure des données, l'exploration de données et d'autres travaux.

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