Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pywikibot
- import matplotlib.pyplot as plt
- import pandas as pd
- from datetime import datetime, timedelta
- from collections import defaultdict
- # Configuration de Pywikibot
- site = pywikibot.Site('fr', 'wikipedia')
- # Fonction pour obtenir les articles dans une catégorie
- def get_articles_in_category(category_name):
- category = pywikibot.Category(site, category_name)
- articles = list(category.articles())
- return articles
- # Fonction pour obtenir la date de création d'un article
- def get_creation_date(page):
- try:
- revisions = list(page.revisions(reverse=True, total=1))
- if revisions:
- return revisions[0].timestamp
- except Exception as e:
- print(f"Erreur pour la page {page.title()}: {e}")
- return None
- # Période pour laquelle nous voulons récupérer les données
- start_date = datetime(2002, 1, 1)
- end_date = datetime(2024, 1, 1)
- # Récupérer les articles de la catégorie Jeux vidéo
- articles = get_articles_in_category('Chemin de fer')
- # Vérifier que des articles ont été récupérés
- if not articles:
- print("Aucun article trouvé dans la catégorie spécifiée.")
- else:
- print(f"Nombre d'articles récupérés: {len(articles)}")
- print("Titres des articles récupérés:")
- for article in articles:
- print(article.title())
- # Récupérer les dates de création des articles
- creation_dates = []
- for article in articles:
- creation_date = get_creation_date(article)
- if creation_date:
- creation_dates.append(creation_date)
- # Vérifier les dates de création récupérées
- if not creation_dates:
- print("Aucune date de création trouvée pour les articles.")
- else:
- print("Dates de création des articles récupérées.")
- # Compter les articles par mois
- date_counts = defaultdict(int)
- for creation_date in creation_dates:
- year_month = creation_date.strftime('%Y-%m')
- date_counts[year_month] += 1
- # Vérifier les dates de création comptabilisées
- if not date_counts:
- print("Aucune date de création comptabilisée.")
- else:
- print("Dates de création comptabilisées:")
- for date, count in date_counts.items():
- print(f"{date}: {count}")
- # Convertir les données en DataFrame si des dates ont été trouvées
- if date_counts:
- data = [{'Date': k, 'Count': v} for k, v in sorted(date_counts.items())]
- df = pd.DataFrame(data)
- # Vérifier les données récupérées
- print(df)
- # Convertir les dates en format datetime pour une meilleure manipulation
- df['Date'] = pd.to_datetime(df['Date'])
- # Afficher les données sous forme de courbe en barres
- plt.figure(figsize=(15, 7))
- plt.bar(df['Date'], df['Count'], width=20, align='center')
- plt.xlabel('Date')
- plt.ylabel('Nombre d\'articles')
- plt.title('Nombre d\'articles liés à la catégorie Chemin de fer au fil du temps')
- plt.xticks(rotation=45)
- plt.grid(True)
- plt.tight_layout()
- plt.show()
- else:
- print("Aucune donnée à afficher.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement