Maison  >  Article  >  développement back-end  >  Scrapy met en œuvre la collecte et l'analyse de données sur des sites Web d'actualités

Scrapy met en œuvre la collecte et l'analyse de données sur des sites Web d'actualités

PHPz
PHPzoriginal
2023-06-22 19:34:351451parcourir

Avec le développement continu de la technologie Internet, les sites Web d'information sont devenus le principal moyen permettant aux gens d'obtenir des informations sur l'actualité. La manière de collecter et d’analyser rapidement et efficacement les données des sites Web d’information est devenue l’une des orientations de recherche importantes dans le domaine Internet actuel. Cet article expliquera comment utiliser le framework Scrapy pour mettre en œuvre la collecte et l'analyse de données sur les sites Web d'actualités.

1. Introduction au framework Scrapy

Scrapy est un framework de robot d'exploration Web open source écrit en Python, qui peut être utilisé pour extraire des données structurées à partir de sites Web. Le framework Scrapy est basé sur le framework Twisted et peut explorer de grandes quantités de données rapidement et efficacement. Scrapy possède les fonctionnalités suivantes :

  1. Fonctionnalités puissantes - Scrapy fournit de nombreuses fonctionnalités utiles, telles que des requêtes et des gestionnaires personnalisés, des mécanismes automatiques, des outils de débogage, etc.
  2. Configuration flexible - Le framework Scrapy fournit un grand nombre d'options de configuration qui peuvent être configurées de manière flexible en fonction des besoins spécifiques du robot.
  3. Facile à agrandir - La conception architecturale de Scrapy est très claire et peut être facilement étendue et développée secondairement.

2. Collecte de données sur les sites Web d'actualités

Pour la collecte de données sur les sites Web d'actualités, nous pouvons utiliser le framework Scrapy pour explorer les sites Web d'actualités. Ce qui suit prend le site Web Sina News comme exemple pour présenter l'utilisation du framework Scrapy.

  1. Créer un nouveau projet Scrapy

Entrez la commande suivante sur la ligne de commande pour créer un nouveau projet Scrapy :

scrapy startproject sina_news

Cette commande créera un nouveau projet Scrapy nommé sina_news dans le répertoire courant.

  1. Writing Spider

Dans le projet Scrapy nouvellement créé, vous pouvez implémenter l'exploration du Web en écrivant Spider. Dans Scrapy, Spider est une classe Python spéciale utilisée pour définir comment explorer les données d'un site Web. Voici un exemple de Spider pour un site d'actualités Sina :

import scrapy

class SinaNewsSpider(scrapy.Spider):
    name = 'sina_news'
    start_urls = [
        'https://news.sina.com.cn/', # 新浪新闻首页
    ]

    def parse(self, response):
        for news in response.css('div.news-item'):
            yield {
                'title': news.css('a::text').extract_first(),
                'link': news.css('a::attr(href)').extract_first(),
                'datetime': news.css('span::text').extract_first(),
            }

Spider définit les règles d'exploration des sites d'actualités et la manière d'analyser les réponses. Dans le code ci-dessus, nous définissons un Spider nommé "sina_news" et spécifions l'URL de départ comme page d'accueil de Sina News. Dans le même temps, nous avons également défini une fonction d'analyse pour analyser la réponse du site Web.

Dans cette fonction d'analyse, nous utilisons la syntaxe CSS Selector pour extraire le titre, le lien et l'heure de publication de l'actualité, et renvoyer ces informations sous la forme d'un dictionnaire.

  1. Exécuter le Spider

Après avoir terminé l'écriture du Spider, nous pouvons exécuter le Spider et explorer les données. Entrez la commande suivante dans la ligne de commande :

scrapy crawl sina_news -o sina_news.json

Cette commande démarrera le Spider "sina_news" et enregistrera les données analysées dans un fichier JSON nommé sina_news.json.

3. Analyse des données du site d'actualités

Après avoir terminé la collecte de données, nous devons analyser les données collectées et en extraire des informations précieuses.

  1. Nettoyage des données

Lors de la collecte de données à grande échelle, vous rencontrez souvent des données bruyantes. Par conséquent, avant de procéder à l’analyse des données, nous devons nettoyer les données collectées. Ce qui suit utilise la bibliothèque Python Pandas comme exemple pour présenter comment effectuer le nettoyage des données.

Lisez les données d'actualités Sina collectées :

importez les pandas au format pd

df = pd.read_json('sina_news.json')

Maintenant, nous obtenons un ensemble de données de type DataFrame. En supposant qu'il y ait des données en double dans cet ensemble de données, nous pouvons utiliser la bibliothèque Pandas pour le nettoyage des données :

df.drop_duplicates(inplace=True)

La ligne de code ci-dessus supprimera les données en double dans l'ensemble de données.

  1. Analyse des données

Après le nettoyage des données, nous pouvons analyser davantage les données collectées. Voici quelques techniques d’analyse de données couramment utilisées.

(1) Analyse de mots clés

Nous pouvons comprendre les sujets d'actualité en effectuant une analyse de mots clés sur les titres d'actualité. Voici un exemple d'analyse de mots clés pour les titres d'actualités Sina :

from jieba.analyse import extract_tags

keywords = extract_tags(df['title'].to_string(), topK=20, withWeight=False, allowPOS=( ' ns', 'n'))
print(keywords)

Le code ci-dessus utilise la fonction extract_tags de la bibliothèque jieba pour extraire les 20 premiers mots-clés du titre de l'actualité.

(2) Analyse des séries chronologiques

Nous pouvons comprendre la tendance des événements d'actualité en comptant les titres d'actualité par ordre chronologique. Voici un exemple d'analyse de séries chronologiques de l'actualité Sina par mois :

df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime')
df_month = df .resample('M').count()
print(df_month)

Le code ci-dessus convertit l'heure du communiqué de presse en type Datetime de Pandas et le définit comme index de l'ensemble de données. Nous avons ensuite utilisé la fonction de rééchantillonnage pour rééchantillonner les mois et calculer le nombre de communiqués de presse par mois.

(3) Classification basée sur l'analyse des sentiments

Nous pouvons classer les actualités en effectuant une analyse des sentiments sur les titres d'actualités. Voici un exemple d'analyse des sentiments sur Sina News :

from snownlp import SnowNLP

df['sentiment'] = df['title'].apply(lambda x: SnowNLP(x).sentiments)
positive_news = df [df['sentiment'] > 0.6]
negative_news = df[df['sentiment'] <= 0.4]
print('Nombre de nouvelles positives :', len(positive_news))
print('Nombre de nouvelles négatives : ', len(negative_news))

Le code ci-dessus utilise la bibliothèque SnowNLP pour l'analyse des sentiments et définit les nouvelles avec une valeur de sentiment supérieure à 0,6 comme des nouvelles positives, et les nouvelles avec une valeur de sentiment inférieure ou égale à 0,4 comme des nouvelles négatives.

4. Résumé

Cet article présente comment utiliser le framework Scrapy pour collecter des données de sites Web d'actualités et la bibliothèque Pandas pour le nettoyage et l'analyse des données. Le framework Scrapy fournit de puissantes fonctions de robot d'exploration Web capables d'analyser de grandes quantités de données rapidement et efficacement. La bibliothèque Pandas fournit de nombreuses fonctions de traitement de données et d'analyse statistique qui peuvent nous aider à extraire des informations précieuses à partir des données collectées. En utilisant ces outils, nous pouvons mieux comprendre les sujets d’actualité et en obtenir des informations utiles.

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