183 lines
15 KiB
Python
183 lines
15 KiB
Python
|
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)
|