Maison  >  Article  >  développement back-end  >  Scrapy Crawler en action : exploration des données de classement des films Maoyan

Scrapy Crawler en action : exploration des données de classement des films Maoyan

WBOY
WBOYoriginal
2023-06-22 08:58:552169parcourir

Pratique de Scrapy Crawler : exploration des données de classement des films Maoyan

Avec le développement d'Internet, l'exploration de données est devenue une partie importante de l'ère du Big Data. Dans le processus d'exploration des données, la technologie des robots d'exploration peut être utilisée pour obtenir automatiquement les données nécessaires au moment, les traiter et les analyser. Ces dernières années, Python est devenu l'un des langages de programmation les plus populaires. Parmi eux, Scrapy est un puissant framework d'exploration basé sur Python. Il possède une large gamme d'applications et a attiré l'attention de tous, notamment dans le domaine de l'exploration de données.

Cet article est basé sur le framework Scrapy pour explorer les données de classement des films Maoyan. Le processus spécifique est divisé en quatre parties : analyser la structure de la page, écrire le framework d'exploration, analyser la page et stocker les données.

1. Analyser la structure de la page

Tout d'abord, nous devons analyser la structure de la page de classement des films Maoyan. Pour faciliter l'utilisation, nous utilisons le navigateur Google Chrome pour l'analyse des pages et XPath pour extraire les informations requises.

Comme vous pouvez le voir, la page de classement des films Maoyan contient des informations sur plusieurs films, et chaque film possède un bloc de code HTML similaire à l'image ci-dessous.

Notre objectif est d'obtenir les cinq données du nom du film, du rôle principal, de l'heure de sortie, du lien vers l'affiche du film et de la note de chaque bloc de code HTML. Ensuite, nous pouvons appuyer sur la touche F12 pour ouvrir les outils de développement dans le navigateur Google Chrome, puis sélectionner l'onglet "Éléments", déplacer la souris vers l'élément cible que nous devons extraire, cliquer avec le bouton droit et sélectionner "Copier -> Copier XPath " .

Le chemin XPath copié est le suivant :

/html/body/div[3]/div/div[2]/dl/dd[1]/div/div/div[1]/p[1]/ a /text()

où "/html/body/div[3]/div/div[2]/dl/dd" représente le nœud parent de la liste entière des films. En descendant dans l'ordre, vous pouvez trouver les éléments. nous devons extraire.

2. Écrivez le framework du robot

Ensuite, nous devons créer un projet Scrapy Vous pouvez vous référer à la documentation officielle de Scrapy (https://docs.scrapy.org/en/latest/intro/tutorial.html). Après avoir créé le projet, créez un nouveau fichier nommé maoyan.py dans le répertoire Spiders.

Ce qui suit est notre code de framework d'exploration :

import scrapy
from maoyan.items import MaoyanItem

class MaoyanSpider(scrapy.Spider):

name = 'maoyan'
allowed_domains = ['maoyan.com']
start_urls = ['http://maoyan.com/board/4']

def parse(self, response):
    movies = response.xpath('//dl[@class="board-wrapper"]/dd')
    for movie in movies:
        item = MaoyanItem()
        item['title'] = movie.xpath('.//p[@class="name"]/a/@title').extract_first()
        item['actors'] = movie.xpath('.//p[@class="star"]/text()').extract_first().strip()
        item['release_date'] = movie.xpath('.//p[@class="releasetime"]/text()').extract_first().strip()
        item['image_url'] = movie.xpath('.//img/@data-src').extract_first()
        item['score'] = movie.xpath('.//p[@class="score"]/i[@class="integer"]/text()').extract_first() + 
                        movie.xpath('.//p[@class="score"]/i[@class="fraction"]/text()').extract_first()
        yield item

Dans le code, nous définissons d'abord le nom de Spider, les domaines_autorisés et les URL de démarrage. Parmi eux, "allowed_domains" signifie que seules les URL appartenant à ce nom de domaine seront accédées et extraites par le robot. Dans le même temps, « start_urls » indique la première adresse URL que le robot demandera.

La méthode d'analyse de Spider reçoit le contenu de la réponse, puis extrait les cinq données du nom de chaque film, du rôle principal, de l'heure de sortie, du lien vers l'affiche du film et de la note via le chemin XPath, et les enregistre dans MaoyanItem.

Enfin, nous avons renvoyé chaque objet Item via le mot-clé rendement. Remarque : L'objet Item que nous avons défini se trouve dans un fichier nommé items.py et doit être importé.

3. Analyser la page

Lorsque le robot d'exploration localise la page que nous devons explorer, nous pouvons commencer à analyser le document HTML et extraire les informations dont nous avons besoin. Cette partie du contenu se concentre principalement sur les requêtes XPath et le traitement des expressions régulières des objets de réponse dans Scrapy.

Dans cet exemple, nous utilisons le chemin XPath pour extraire cinq éléments de données pour chaque film dans la page de classement des films Maoyan.

4. Stocker les données

Une fois les données analysées, nous devons les stocker. De manière générale, nous stockons les données obtenues dans un fichier ou les sauvegardons dans une base de données.

Dans cet exemple, nous choisissons de sauvegarder les données dans un fichier .csv :

import csv

class MaoyanPipeline(object):

def __init__(self):
    self.file = open('maoyan_top100_movies.csv', 'w', newline='', encoding='utf-8')
    self.writer = csv.writer(self.file)

def process_item(self, item, spider):
    row = [item['title'], item['actors'], item['release_date'], item['image_url'], item['score']]
    self.writer.writerow(row)
    return item

def close_spider(self, spider):
    self.file.close()

Dans le code ci-dessus, nous utilisons le module csv dans Python pour importer les données Write dans un fichier nommé maoyan_top100_movies.csv. Lorsque le spider est fermé, le fichier csv sera également fermé.

Résumé

Grâce à cet article, nous avons appris à utiliser le framework Scrapy pour explorer les données de classement des films Maoyan. Nous avons d'abord analysé la structure de la page, puis écrit le framework Scrapy pour explorer les données, analyser la page et stocker les données. Dans le cadre d’un combat réel, nous pouvons apprendre à unifier la légalité, la convivialité et l’efficacité de la capture des données.

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