import time import requests from bs4 import BeautifulSoup import json import re def get_departement_number(url): pattern = re.compile(r"/ensemble_geographique/.+?/(\d+[A-Z]?)/") match = pattern.search(url) if match: return match.group(1) else: return None results = {} # Liste des régions et départements departements = [ # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/94/2A/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/94/2B/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/93/13/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/93/84/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/93/83/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/93/04/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/93/06/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/93/05/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/48/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/03/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/30/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/11/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/34/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/66/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/15/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/43/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/63/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/65/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/64/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/40/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/33/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/24/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/47/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/46/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/09/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/32/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/31/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/82/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/12/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/76/81/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/01/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/38/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/74/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/42/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/69/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/73/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/07/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/84/26/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/17/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/19/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/23/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/87/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/86/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/16/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/75/79/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/53/22/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/52/85/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/28/50/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/53/56/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/53/29/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/53/35/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/52/44/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/52/49/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/52/72/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/52/53/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/28/14/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/28/61/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/24/28/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/89/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/70/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/28/76/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/28/27/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/24/37/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/24/45/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/24/36/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/24/41/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/24/18/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/21/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/58/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/71/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/39/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/51/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/32/60/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/32/62/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/32/59/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/32/02/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/32/80/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/08/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/10/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/52/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/68/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/67/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/54/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/77/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/55/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/57/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/44/88/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/91/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/78/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/95/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/93/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/75/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/92/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/94/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/25/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/27/90/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/93/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/92/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/94/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/11/75/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/01/971/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/02/972/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/03/973/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/04/974/index.html", # "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/06/976/index.html", "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/./975/index.html", "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/./988/index.html", "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/./987/index.html", "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/./986/index.html", "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/./ZX/index.html", "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/ensemble_geographique/./ZZ/index.html" ] # Fonction pour récupérer les données d'une région def get_region_data(url): print('get region ', url) response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") # Extraire les données du tableau table = soup.find_all("div", {"class": "sie-table-layout-fixed"}) # print(table) if table: table_body = table[0].find("tbody") rows = table_body.find_all("tr") print(len(rows)) data = [] for row in rows: cols = row.find_all("td") print(len(cols)) if cols: parti = cols[0].text.strip() nuance = cols[1].text.strip() voix = cols[2].text.strip() pourcentage_inscrits = cols[3].text.strip() pourcentage_exprimes = cols[4].text.strip() print(parti, 'voix: ', voix) data.append({ "parti": parti, "nuance": nuance, "voix": voix, "pourcentage_inscrits": pourcentage_inscrits, "pourcentage_exprimes": pourcentage_exprimes }) return data else: print('pas de table de données trouvée') return None for url in departements: departement_number = get_departement_number(url) data_zone = get_region_data(url) print(data_zone) results[departement_number] = data_zone # Enregistrer les résultats dans un fichier JSON with open("elections_2024.json", "w") as f: print(results) json.dump(results, f, indent=4)