79 lines
3.5 KiB
Python
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()
|
|
|