Maison  >  Article  >  développement back-end  >  Pratique Scrapy : explorer et analyser les données d'un forum de jeu

Pratique Scrapy : explorer et analyser les données d'un forum de jeu

WBOY
WBOYoriginal
2023-06-22 09:04:39918parcourir

Ces dernières années, l'utilisation de Python pour l'exploration et l'analyse de données est devenue de plus en plus courante. Scrapy est un outil populaire pour récupérer les données de sites Web. Dans cet article, nous présenterons comment utiliser Scrapy pour explorer les données d'un forum de jeu en vue d'une analyse ultérieure des données.

1. Sélectionnez la cible

Tout d'abord, nous devons sélectionner un site Web cible. Ici, nous choisissons un forum de jeu.

Comme le montre l'image ci-dessous, ce forum contient diverses ressources, telles que des guides de jeu, des téléchargements de jeux, des communications avec les joueurs, etc.

Notre objectif est d'obtenir le titre du message, l'auteur, l'heure de publication, le nombre de réponses et d'autres informations pour une analyse ultérieure des données.

2. Créer un projet Scrapy

Avant de commencer à explorer les données, nous devons créer un projet Scrapy. Sur la ligne de commande, entrez la commande suivante :

scrapy startproject forum_spider

Cela créera un nouveau projet appelé "forum_spider".

3. Configurer les paramètres de Scrapy

Dans le fichier settings.py, nous devons configurer certains paramètres pour garantir que Scrapy puisse explorer avec succès les données requises à partir du site Web du forum. Voici quelques paramètres couramment utilisés :

BOT_NAME = 'forum_spider'

SPIDER_MODULES = ['forum_spider.spiders']
NEWSPIDER_MODULE = 'forum_spider.spiders'

ROBOTSTXT_OBEY = False # 忽略robots.txt文件
DOWNLOAD_DELAY = 1 # 下载延迟
COOKIES_ENABLED = False # 关闭cookies

4. Écriture de Spider

Dans Scrapy, Spider est la classe utilisée pour effectuer le travail réel (c'est-à-dire explorer le site Web). Nous devons définir une araignée pour obtenir les données requises du forum.

Nous pouvons utiliser Scrapy's Shell pour tester et déboguer notre Spider. Sur la ligne de commande, entrez la commande suivante :

scrapy shell "https://forum.example.com"

Cela ouvrira un shell Python interactif avec le forum cible.

En shell, nous pouvons utiliser la commande suivante pour tester le sélecteur requis :

response.xpath("xpath_expression").extract()

Ici, "xpath_expression" doit être l'expression XPath utilisée pour sélectionner les données requises.

Par exemple, le code suivant est utilisé pour obtenir tous les fils de discussion du forum :

response.xpath("//td[contains(@id, 'td_threadtitle_')]").extract()

Après avoir déterminé l'expression XPath, nous pouvons créer un Spider.

Dans le dossier spiders, nous créons un nouveau fichier appelé "forum_spider.py". Voici le code de Spider :

import scrapy

class ForumSpider(scrapy.Spider):
    name = "forum"
    start_urls = [
        "https://forum.example.com"
    ]

    def parse(self, response):
        for thread in response.xpath("//td[contains(@id, 'td_threadtitle_')]"):
            yield {
                'title': thread.xpath("a[@class='s xst']/text()").extract_first(),
                'author': thread.xpath("a[@class='xw1']/text()").extract_first(),
                'date': thread.xpath("em/span/@title").extract_first(),
                'replies': thread.xpath("a[@class='xi2']/text()").extract_first()
            }

Dans le code ci-dessus, nous définissons d'abord le nom de Spider comme "forum" et définissons une URL de départ. Ensuite, nous avons défini la méthode parse() pour gérer la réponse de la page du forum.

Dans la méthode parse(), nous utilisons des expressions XPath pour sélectionner les données dont nous avons besoin. Ensuite, nous utilisons l'instruction rendement pour générer les données dans un dictionnaire Python et les renvoyer. Cela signifie que notre Spider explorera un par un tous les fils de discussion de la page d'accueil du forum et extraira les données requises.

5. Exécutez Spider

Avant d'exécuter Spider, nous devons nous assurer que Scrapy a été correctement configuré. Nous pouvons tester que le spider fonctionne correctement en utilisant la commande suivante :

scrapy crawl forum

Cela démarrera notre spider et affichera les données récupérées dans la console.

6. Analyse des données

Après avoir exploré avec succès les données, nous pouvons utiliser certaines bibliothèques Python (telles que Pandas et Matplotlib) pour analyser et visualiser les données.

Nous pouvons d'abord stocker les données explorées sous forme de fichier CSV pour faciliter l'analyse et le traitement des données.

import pandas as pd

df = pd.read_csv("forum_data.csv")
print(df.head())

Cela affichera les cinq premières lignes de données du fichier CSV.

Nous pouvons utiliser des bibliothèques telles que Pandas et Matplotlib pour effectuer une analyse statistique et une visualisation des données.

Voici un exemple simple où nous trions les données par heure de publication et traçons le nombre total de publications.

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("forum_data.csv")

df['date'] = pd.to_datetime(df['date']) #将时间字符串转化为时间对象
df['month'] = df['date'].dt.month

grouped = df.groupby('month')
counts = grouped.size()

counts.plot(kind='bar')
plt.title('Number of Threads by Month')
plt.xlabel('Month')
plt.ylabel('Count')
plt.show()

Dans le code ci-dessus, nous avons converti l'heure de sortie en un objet Python Datetime et regroupé les données par mois. Nous avons ensuite utilisé Matplotlib pour créer un histogramme indiquant le nombre d'articles publiés chaque mois.

7. Résumé

Cet article explique comment utiliser Scrapy pour explorer les données d'un forum de jeu et montre comment utiliser les bibliothèques Pandas et Matplotlib de Python pour l'analyse et la visualisation des données. Ces outils sont des bibliothèques Python très populaires dans le domaine de l'analyse de données et peuvent être utilisées pour explorer et visualiser les données de sites Web.

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