83 lines
3.2 KiB
Python
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()
|