From dd5cd760e0e4ee8e4f6445dc59e6b67f84ccadfa Mon Sep 17 00:00:00 2001 From: Xavier Date: Thu, 27 Aug 2026 22:00:23 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20a=20jour=20module=20=C3=A9duction=20nati?= =?UTF-8?q?onale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/eduscol_scraper.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/eduscol_scraper.py b/modules/eduscol_scraper.py index e447c17..812bc97 100644 --- a/modules/eduscol_scraper.py +++ b/modules/eduscol_scraper.py @@ -11,16 +11,21 @@ def maj_base_education(): os.makedirs(RAG_DIR, exist_ok=True) url_rss = "https://www.education.gouv.fr/bo/rss.xml" + # En-têtes complets simulant un navigateur pour éviter le blocage 403 + headers = { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "Accept": "application/rss+xml,application/xml;q=0.9,text/html;q=0.9,*/*;q=0.8", + "Accept-Language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7" + } + try: - response = requests.get(url_rss, timeout=15) + response = requests.get(url_rss, headers=headers, timeout=15) if response.status_code == 200: root = ET.fromstring(response.content) - # Formatage pour une ingestion parfaite par le RAG contenu_md = f"# Veille Pédagogique - Bulletin Officiel (B.O.)\n" contenu_md += f"*Date de mise à jour RAG : {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}*\n\n" - # On extrait les 20 dernières circulaires/textes de loi for item in root.findall('.//item')[:20]: titre = item.find('title').text if item.find('title') is not None else "Document sans titre" lien = item.find('link').text if item.find('link') is not None else "Aucun lien"