From 9496ed6fb73022cfb8833f0515e8f66afc55dc50 Mon Sep 17 00:00:00 2001 From: Xavier Date: Thu, 27 Aug 2026 22:03:41 +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 | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/eduscol_scraper.py b/modules/eduscol_scraper.py index 812bc97..accedca 100644 --- a/modules/eduscol_scraper.py +++ b/modules/eduscol_scraper.py @@ -7,15 +7,20 @@ from modules.logger import log_event RAG_DIR = "/DATA/AppData/MULTI-IA-AETHAS38/RAG/Education_Nationale" def maj_base_education(): - """Scrape le flux RSS du Bulletin Officiel pour maintenir la base documentaire à jour.""" + """Scrape le flux RSS du Bulletin Officiel en contournant les protections WAF.""" 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 + # En-têtes complets simulant une vraie navigation web humaine 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" + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", + "Accept": "application/rss+xml,application/xml,text/xml;q=0.9,*/*;q=0.8", + "Accept-Language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7", + "Referer": "https://www.education.gouv.fr/bo/le-bulletin-officiel-de-l-education-nationale", + "Sec-Ch-Ua": '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"', + "Sec-Ch-Ua-Mobile": "?0", + "Sec-Ch-Ua-Platform": '"Windows"', + "Upgrade-Insecure-Requests": "1" } try: @@ -27,7 +32,7 @@ def maj_base_education(): contenu_md += f"*Date de mise à jour RAG : {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}*\n\n" for item in root.findall('.//item')[:20]: - titre = item.find('title').text if item.find('title') is not None else "Document sans titre" + 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" desc = item.find('description').text if item.find('description') is not None else "Pas de résumé disponible."