oedb-backend/extractors/debug_viparis_html.py
2025-10-10 15:11:10 +02:00

79 lines
3.5 KiB
Python

#!/usr/bin/env python3
"""
Script de debug pour analyser la structure HTML de la page Viparis
"""
import requests
from bs4 import BeautifulSoup
import re
def analyze_viparis_structure():
"""Analyse la structure HTML de la page Viparis"""
url = "https://www.viparis.com/actualites-evenements/evenements"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
try:
print(f"🔍 Analyse de la structure HTML de: {url}")
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# Chercher les éléments contenant des événements
print("\n📋 Recherche d'éléments d'événements...")
# Chercher des patterns communs pour les événements
event_patterns = [
'event', 'evenement', 'agenda', 'salon', 'exposition', 'congres'
]
for pattern in event_patterns:
elements = soup.find_all(string=re.compile(pattern, re.I))
if elements:
print(f"✅ Trouvé '{pattern}': {len(elements)} éléments")
for i, elem in enumerate(elements[:3]): # Afficher les 3 premiers
print(f" {i+1}: {elem.strip()[:100]}...")
# Chercher des divs avec des classes qui pourraient contenir des événements
print("\n🔍 Recherche de divs avec classes d'événements...")
div_classes = soup.find_all('div', class_=re.compile(r'event|evenement|agenda|salon|expo', re.I))
print(f"Divs avec classes d'événements: {len(div_classes)}")
# Chercher des liens qui pourraient être des événements
print("\n🔗 Recherche de liens d'événements...")
event_links = soup.find_all('a', href=re.compile(r'event|evenement|salon|expo', re.I))
print(f"Liens d'événements: {len(event_links)}")
# Chercher des images d'événements
print("\n🖼️ Recherche d'images d'événements...")
event_images = soup.find_all('img', src=re.compile(r'event|evenement|salon|expo', re.I))
print(f"Images d'événements: {len(event_images)}")
# Chercher des éléments avec des dates
print("\n📅 Recherche d'éléments avec des dates...")
date_elements = soup.find_all(string=re.compile(r'\d{1,2}/\d{1,2}/\d{4}|\d{1,2}\s+\w+\s+\d{4}', re.I))
print(f"Éléments avec dates: {len(date_elements)}")
for i, elem in enumerate(date_elements[:5]):
print(f" {i+1}: {elem.strip()}")
# Chercher des éléments avec des titres d'événements
print("\n📝 Recherche de titres d'événements...")
title_elements = soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], string=re.compile(r'BattleKart|Virtual Room|PRODURABLE|RÉÉDUCA|SALON', re.I))
print(f"Titres d'événements: {len(title_elements)}")
for i, elem in enumerate(title_elements[:5]):
print(f" {i+1}: {elem.get_text().strip()}")
# Sauvegarder le HTML pour analyse
with open('viparis_debug.html', 'w', encoding='utf-8') as f:
f.write(response.text)
print(f"\n💾 HTML sauvegardé dans viparis_debug.html")
except Exception as e:
print(f"❌ Erreur: {e}")
if __name__ == "__main__":
analyze_viparis_structure()