oedb-backend/extractors/debug_ccpl_html.py
2025-10-09 23:35:12 +02:00

83 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""
Script de debug pour analyser la structure HTML de l'agenda CCPL
"""
import requests
from bs4 import BeautifulSoup
import re
def debug_html_structure():
"""Analyse la structure HTML de l'agenda CCPL"""
url = "https://www.cc-paysdelimours.fr/agenda"
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"🌐 Récupération de: {url}")
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
print(f"📄 Taille du HTML: {len(response.text)} caractères")
# Chercher tous les éléments qui contiennent des dates
date_pattern = re.compile(r'\b\d{1,2}\s+(jan|fév|mar|avr|mai|jun|jul|aoû|sep|oct|nov|déc)\b', re.I)
date_elements = soup.find_all(string=date_pattern)
print(f"📅 Éléments avec dates trouvés: {len(date_elements)}")
# Afficher les premiers éléments avec dates
for i, elem in enumerate(date_elements[:5]):
print(f" {i+1}. {elem.strip()}")
print(f" Parent: {elem.parent.name if elem.parent else 'None'}")
print(f" Classes: {elem.parent.get('class', []) if elem.parent else 'None'}")
print()
# Chercher des patterns spécifiques
print("🔍 Recherche de patterns spécifiques:")
# Chercher des éléments avec des classes communes
common_classes = ['event', 'agenda', 'manifestation', 'item', 'card', 'content']
for class_name in common_classes:
elements = soup.find_all(class_=re.compile(class_name, re.I))
print(f" Classe '{class_name}': {len(elements)} éléments")
# Chercher des éléments avec du texte contenant des dates
all_elements = soup.find_all(['div', 'article', 'li', 'p', 'span'])
elements_with_dates = []
for elem in all_elements:
text = elem.get_text()
if date_pattern.search(text) and len(text) > 10:
elements_with_dates.append((elem, text[:100]))
print(f"📋 Éléments avec dates et texte significatif: {len(elements_with_dates)}")
# Afficher les premiers éléments
for i, (elem, text) in enumerate(elements_with_dates[:3]):
print(f" {i+1}. Tag: {elem.name}, Classes: {elem.get('class', [])}")
print(f" Texte: {text}...")
print()
# Chercher des liens
links = soup.find_all('a', href=True)
print(f"🔗 Liens trouvés: {len(links)}")
# Afficher quelques liens
for i, link in enumerate(links[:5]):
print(f" {i+1}. {link.get('href')} - {link.get_text()[:50]}...")
# Sauvegarder le HTML pour inspection
with open('ccpl_debug.html', 'w', encoding='utf-8') as f:
f.write(response.text)
print("💾 HTML sauvegardé dans ccpl_debug.html")
except Exception as e:
print(f"❌ Erreur: {e}")
if __name__ == "__main__":
debug_html_structure()