Site icon Blog ARC Optimizer

Analyse des flux RSS à l’aide de PySpark

Analyse des flux RSS à l’aide de PySpark


Introduction

Un flux RSS (Really Simple Syndication) est un fichier en ligne qui contient des détails sur chaque élément de contenu publié par un site. Les flux RSS sont un moyen courant de distribuer des mises à jour provenant de sites Web et de blogs. Ces flux sont souvent fournis au format XML et Python propose plusieurs outils pour les analyser et en extraire des informations. Cet article de blog explorera comment analyser les flux RSS XML à l’aide de Pyspark.

Exemple de test de flux RSS

Conditions préalables

Avant de commencer, assurez-vous que Python est installé sur votre système (Lien pour installer Python- https://www.python.org/downloads/ ).

Comprendre les flux RSS et l’analyse XML

Les flux RSS contiennent des articles, des actualités ou d’autres mises à jour dans un format XML structuré. Pour travailler avec ces flux, nous pouvons utiliser la bibliothèque xml.etree.ElementTree ou feedparser en Python, qui fournit un moyen efficace d’analyser les données XML. Gardez à l’esprit que les flux RSS peuvent contenir des éléments supplémentaires au-delà du titre, du lien et de la description. Si nous utilisons xml.etree.ElementTree, nous devrons adapter le code d’analyse pour extraire d’autres éléments d’intérêt. Nous comprendrons l’utilisation et la mise en œuvre du module feedparser dans ce blog.

Fonctionnalité xml.etree.ElementTree Analyseur de flux
Utilisation principale Analyse et manipulation XML générales Analyse des flux RSS et Atom
Type de bibliothèque Bibliothèque standard Python intégrée Bibliothèque tierce (nécessite une installation)
Installation Aucune installation requise Nécessite une installation (pip install feedparser)
Se concentrer Structures de données XML générales Formats de syndication (RSS, Atom)
Capacité d’analyse Analyse les documents XML en objets ElementTree Analyse les flux RSS et Atom en données structurées
Prise en charge de XPath Prise en charge de base de XPath pour les requêtes XML Aucun; axé sur l’extraction de données de flux
Gestion des éléments Gère les éléments, les attributs et le texte avec une structure arborescente Se concentre sur l’extraction des métadonnées et des entrées du flux
Gestion du format de flux Non spécialisé pour les flux RSS/Atom Spécialisé pour gérer divers formats d’aliments
Accès aux données Parcours manuel et interrogation des éléments XML API structurée pour accéder aux informations sur les flux
Capacité de modification Permet la création et la modification de structures XML Lecture seule ; ne modifie pas les flux
Gestion des erreurs Gestion des erreurs de base pour l’analyse XML Inclut la gestion des erreurs pour les problèmes d’analyse des flux
Structure de sortie Fournit des objets ElementTree avec une balise et du texte Fournit un objet structuré de type dictionnaire pour les flux
Cas d’utilisation courants Tâches XML générales, telles que les fichiers de configuration ou l’échange de données Agrégation et traitement des données de flux provenant de sources d’actualités
Performance Efficace pour les tâches XML standards Optimisé pour l’analyse des flux, mais peut être moins flexible pour le XML sans flux
ce qu’ils peuvent analyser

Gatsby le magnifique
F. Scott Fitzgerald
1925


Pour tuer un oiseau moqueur
Harper Lee
1960




Exemple de flux RSS
http://www.example.com
Ceci est un exemple de flux RSS

Premier message
http://www.example.com/first-post
Voici la description
Lun. 01 octobre 2023 12:00:00 GMT



Étapes pour analyser les flux RSS XML

Passons aux étapes d’analyse d’un flux RSS XML à l’aide de Python

Importez les bibliothèques requises : commencez par importer toutes les bibliothèques nécessaires.

Remarque : Universal Feed Parser est un module Python qui télécharge et analyse les flux syndiqués. Il peut gérer RSS 0.90, Netscape RSS 0.91, Userland RSS 0.91, etc., Atom 1.0 et plus, les flux CDF et JSON. Il peut également analyser les modules d’extension populaires, comme les extensions iTunes de Dublin Core et Apple. Pour utiliser Universal Feed Parser, vous pouvez utiliser Python 3.8 ou des versions ultérieures. Universal Feed Parser n’est pas destiné à fonctionner de manière autonome ; c’est un module que vous pouvez utiliser dans le cadre d’un programme Python plus vaste. Universal Feed Parser est très facile à utiliser ; il a une fonction publique principale, « analyser ». La fonction d’analyse peut prendre plusieurs arguments, mais un seul d’entre eux est requis et il peut s’agir d’une URL, d’un nom de fichier local ou d’une chaîne brute contenant des données de flux dans n’importe quel format.

Examinons en profondeur l’analyse des flux RSS à l’aide de Pyspark.

1. Initialisez la session Spark, récupérez et chargez le flux RSS : créez une session Spark et téléchargez des fichiers à distance ou via une URL.

from pyspark.sql import SparkSession
import feedparser 
import glob 
import os 

import sys os.environ['PYSPARK_PYTHON'] = sys.executable 

# Initialize SparkSession 
spark = SparkSession.builder \ 
.appName("RSS Feed Processor") \ 
.getOrCreate() 

file_names = glob.glob('c:/Users/Ashita Kumar/Downloads/*.xml')

2. Déclarez le schéma pour le bloc de données.

# Define schema for DataFrame
schema = StructType([
 StructField("file_name", StringType(), True),
 StructField("feed_title", StringType(), True),
 StructField("feed_link", StringType(), True),
 StructField("feed_description", StringType(), True),
 StructField("ID", StringType(), True),
 StructField("title", StringType(), True),
 StructField("description", StringType(), True),
 StructField("link", StringType(), True),
 StructField("image_link", StringType(), True),
 StructField("condition", StringType(), True),
 StructField("availability", StringType(), True),
 StructField("price", StringType(), True),
 StructField("name", StringType(), True),
 StructField("points_value", StringType(), True),
 StructField("ratio", StringType(), True),
 StructField("item_group_id", StringType(), True),
 StructField("brand", StringType(), True),
 StructField("product_type", StringType(), True),
 StructField("color", StringType(), True),
 StructField("size_of_product", StringType(), True),
 StructField("gender", StringType(), True),
 StructField("sale_price", StringType(), True),
 StructField("custom_label_0", StringType(), True),
 StructField("custom_label_1", StringType(), True),
 StructField("fb_product_category", StringType(), True),
 StructField("age_group", StringType(), True),
])

3. Parcourez tous les fichiers et analysez le fichier à l’aide de Feedparser. Utilisez la bibliothèque de requêtes pour récupérer le flux RSS à partir d’une URL et le charger dans un objet de flux. Nous pouvons charger le flux RSS à partir d’une URL ou même d’un emplacement de stockage.

# Create an empty list to store rows
rows = []
# Iterate through all files
for file in file_names:
   print("Processing file:", file)
# Parse the XML file using feedparser
   feed = feedparser.parse(file)
# Extract feed details
   feed_title = feed['feed'].get('title', '')
   feed_link = feed['feed'].get('link', '')
   feed_description = feed['feed'].get('description', '')
# Title of the file
   print("title of the feed ", feed['feed']['title'])
# Link of the Feed
   print("link of the feed ", feed['feed']['link'])
# Description of the feed
   print("description of the feed", feed['feed']['description'])

Sortie des instructions d’impression pour les détails du flux

4. Analyser les éléments RSS : parcourez les éléments RSS pour extraire les informations pertinentes.

# Iterate through feed entries
 for entry in feed.entries:
   row = {"file_name": "big_bazar_file",  # Use the actual file name
         "feed_title": feed_title,
         "feed_link": feed_link,
         "feed_description": feed_description,
         "ID": getattr(entry, 'g_id', ''),
         "title": getattr(entry, 'g_title', ''),
         "description": getattr(entry, 'g_description', ''),
         "link": getattr(entry, 'g_link', ''),
         "image_link": getattr(entry, 'g_image_link', ''),
         "condition": getattr(entry, 'g_condition', ''),
         "availability": getattr(entry, 'g_availability', ''),
         "price": getattr(entry, 'g_price', ''),
         "name": getattr(entry, 'g_name', ''),
         "points_value": getattr(entry, 'g_points_value', ''),
         "ratio": getattr(entry, 'g_ratio', ''),
         "item_group_id": getattr(entry, 'g_item_group_id', ''),
         "brand": getattr(entry, 'g_brand', ''),
         "product_type": getattr(entry, 'g_product_type', ''),
         "color": getattr(entry, 'g_color', ''),
         "size_of_product": getattr(entry, 'g_size', ''),
         "gender": getattr(entry, 'g_gender', ''),
         "sale_price": getattr(entry, 'g_sale_price', ''),
         "custom_label_0": getattr(entry, 'g_custom_label_0', ''),
         "custom_label_1": getattr(entry, 'g_custom_label_1', ''),
         "fb_product_category": getattr(entry, 'g_fb_product_category', ''),
         "age_group": getattr(entry, 'g_age_group', '')}
  rows.append(row)

5. Analysez et stockez les valeurs des éléments du flux RSS dans des blocs de données à l’aide de Spark. Nous pouvons créer une trame de données et l’utiliser à des fins d’analyse ou la stocker dans du parquet selon les besoins.

# Create Spark DataFrame
df = spark.createDataFrame(rows, schema=schema)
# Show the DataFrame with specific columns
df.show(truncate=False)
# Stop the Spark session
spark.stop()

df.show() Sortie

Étapes pour analyser XML à l’aide de Python

Nous pouvons également analyser les flux RSS en utilisant uniquement Python. Nous pourrons y parvenir en utilisant les bibliothèques FeedParser et Pandas.

Avantages et inconvénients de l’utilisation du flux RSS

AVANTAGES INCONVÉNIENTS
1. Contenu agrégé 1. Diminution de la popularité
Regroupe le contenu de plusieurs sources en un seul flux. Les flux RSS sont désormais moins populaires que les réseaux sociaux et autres agrégateurs d’actualités.
2. Personnalisable 2. Nécessite un lecteur RSS
Les utilisateurs peuvent choisir et personnaliser leurs abonnements en fonction de leurs intérêts. L’accès aux flux RSS nécessite un lecteur RSS ou une application d’agrégation.
3. Mises à jour en temps réel 3. Qualité incohérente
Fournit des mises à jour immédiates lorsqu’un nouveau contenu est publié. Certains flux peuvent être obsolètes ou avoir un format incohérent.
4. Expérience sans publicité 4. Prise en charge multimédia limitée
Fournit du contenu sans publicité pour une expérience plus propre. Peut ne pas bien gérer le contenu multimédia comme les vidéos ou les éléments interactifs.
5. Confidentialité 5. Contenu fragmenté
L’abonnement aux flux ne nécessite pas d’informations personnelles, ce qui améliore la confidentialité. Les flux sont répartis sur diverses plates-formes, qui peuvent être disjointes.
6. Accès hors ligne 6. L’expérience mobile peut varier
Le contenu est accessible hors ligne via de nombreux lecteurs RSS. Certains lecteurs RSS peuvent ne pas offrir une bonne expérience sur mobile ou tablette.
7. Partage facile 7. Surcharge potentielle d’informations
Les flux peuvent être facilement partagés avec d’autres. Les utilisateurs peuvent subir une surcharge d’informations s’ils s’abonnent à trop de flux.
8. Pas de filtrage algorithmique 8. Livraison de contenu statique
Le contenu est livré par ordre chronologique sans manipulation algorithmique. Les flux RSS fournissent généralement du contenu statique sans fonctionnalités interactives.

Conclusion

L’analyse des flux RSS XML à l’aide de Python est une compétence précieuse pour travailler avec le contenu dynamique des sites Web et rester à jour avec les dernières informations. Vous pouvez analyser et extraire efficacement des données des flux RSS en utilisant la bibliothèque feedparser et les étapes décrites dans cet article de blog. N’oubliez pas d’ajuster le code d’analyse en fonction de la structure du flux RSS avec lequel vous travaillez.






Source link
Quitter la version mobile