from flask import Flask, jsonify import requests from bs4 import BeautifulSoup import time app = Flask(__name__) KEYWORDS = ["élection présidentielle", "présidentielle", "élections présidentielles", "élection législative", "législative", "élections législatives"] def get_articles(): url = "https://lesoleil.sn/rubriques/actualites/politique/" 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: # Récupérer la page response = requests.get(url, headers=headers, timeout=10) if response.status_code != 200: print(f"Erreur lors de la récupération de la page principale: {response.status_code}") return [] soup = BeautifulSoup(response.text, 'html.parser') article_links = [] # Trouver tous les liens d'articles link_elements = soup.select("a.elementor-cta") for link in link_elements: href = link.get('href') if href and href not in article_links: article_links.append(href) print(f"Nombre de liens trouvés: {len(article_links)}") results = [] for link in article_links: try: article_response = requests.get(link, headers=headers, timeout=10) if article_response.status_code != 200: print(f"Erreur lors de la récupération de l'article {link}: {article_response.status_code}") continue article_soup = BeautifulSoup(article_response.text, 'html.parser') # Essayer différentes sélections pour trouver le titre title_element = article_soup.select_one("h1.td-page-title") or article_soup.select_one("h1") if not title_element: print(f"Pas de titre trouvé pour {link}") continue title = title_element.text.strip() # Essayer différentes sélections pour trouver le contenu content_div = article_soup.select_one("div.td-post-content") or article_soup.select_one( "div.elementor-widget-theme-post-content") if not content_div: print(f"Pas de contenu trouvé pour {link}") continue content = content_div.text.strip() combined_text = f"{title.lower()} {content.lower()}" # Vérifier si le contenu est lié aux élections if any(keyword in combined_text for keyword in KEYWORDS): paragraphs = content.split("\n") description = paragraphs[0] if paragraphs else "" results.append({ "title": title, "description": description, "content": content, "url": link }) print(f"Article trouvé sur les élections: {title}") # Attendre un peu pour ne pas surcharger le serveur time.sleep(1) except Exception as e: print(f"Erreur pour {link}: {str(e)}") print(f"Nombre total d'articles sur les élections trouvés: {len(results)}") return results except Exception as e: print(f"Erreur générale: {str(e)}") return [] @app.route('/', methods=['GET']) def index(): return """