Advertisement
Alexisdepris

Untitled

Jul 7th, 2024
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.00 KB | None | 0 0
  1. import pywikibot
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. from datetime import datetime, timedelta
  5. from collections import defaultdict
  6.  
  7. # Configuration de Pywikibot
  8. site = pywikibot.Site('fr', 'wikipedia')
  9.  
  10.  
  11. # Fonction pour obtenir les articles dans une catégorie
  12. def get_articles_in_category(category_name):
  13.     category = pywikibot.Category(site, category_name)
  14.     articles = list(category.articles())
  15.     return articles
  16.  
  17.  
  18. # Fonction pour obtenir la date de création d'un article
  19. def get_creation_date(page):
  20.     try:
  21.         revisions = list(page.revisions(reverse=True, total=1))
  22.         if revisions:
  23.             return revisions[0].timestamp
  24.     except Exception as e:
  25.         print(f"Erreur pour la page {page.title()}: {e}")
  26.     return None
  27.  
  28.  
  29. # Période pour laquelle nous voulons récupérer les données
  30. start_date = datetime(2002, 1, 1)
  31. end_date = datetime(2024, 1, 1)
  32.  
  33. # Récupérer les articles de la catégorie Jeux vidéo
  34. articles = get_articles_in_category('Chemin de fer')
  35.  
  36. # Vérifier que des articles ont été récupérés
  37. if not articles:
  38.     print("Aucun article trouvé dans la catégorie spécifiée.")
  39. else:
  40.     print(f"Nombre d'articles récupérés: {len(articles)}")
  41.     print("Titres des articles récupérés:")
  42.     for article in articles:
  43.         print(article.title())
  44.  
  45. # Récupérer les dates de création des articles
  46. creation_dates = []
  47. for article in articles:
  48.     creation_date = get_creation_date(article)
  49.     if creation_date:
  50.         creation_dates.append(creation_date)
  51.  
  52. # Vérifier les dates de création récupérées
  53. if not creation_dates:
  54.     print("Aucune date de création trouvée pour les articles.")
  55. else:
  56.     print("Dates de création des articles récupérées.")
  57.  
  58. # Compter les articles par mois
  59. date_counts = defaultdict(int)
  60. for creation_date in creation_dates:
  61.     year_month = creation_date.strftime('%Y-%m')
  62.     date_counts[year_month] += 1
  63.  
  64. # Vérifier les dates de création comptabilisées
  65. if not date_counts:
  66.     print("Aucune date de création comptabilisée.")
  67. else:
  68.     print("Dates de création comptabilisées:")
  69.     for date, count in date_counts.items():
  70.         print(f"{date}: {count}")
  71.  
  72. # Convertir les données en DataFrame si des dates ont été trouvées
  73. if date_counts:
  74.     data = [{'Date': k, 'Count': v} for k, v in sorted(date_counts.items())]
  75.     df = pd.DataFrame(data)
  76.  
  77.     # Vérifier les données récupérées
  78.     print(df)
  79.  
  80.     # Convertir les dates en format datetime pour une meilleure manipulation
  81.     df['Date'] = pd.to_datetime(df['Date'])
  82.  
  83.     # Afficher les données sous forme de courbe en barres
  84.     plt.figure(figsize=(15, 7))
  85.     plt.bar(df['Date'], df['Count'], width=20, align='center')
  86.     plt.xlabel('Date')
  87.     plt.ylabel('Nombre d\'articles')
  88.     plt.title('Nombre d\'articles liés à la catégorie Chemin de fer au fil du temps')
  89.     plt.xticks(rotation=45)
  90.     plt.grid(True)
  91.     plt.tight_layout()
  92.     plt.show()
  93. else:
  94.     print("Aucune donnée à afficher.")
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement