add scrap data
This commit is contained in:
parent
c2d315124b
commit
82fa1ead75
1
elections-scrapping/departements.geojson
Normal file
1
elections-scrapping/departements.geojson
Normal file
File diff suppressed because one or more lines are too long
28410
elections-scrapping/elections_2024.json
Normal file
28410
elections-scrapping/elections_2024.json
Normal file
File diff suppressed because it is too large
Load Diff
1342
elections-scrapping/elections_2024_2.json
Normal file
1342
elections-scrapping/elections_2024_2.json
Normal file
File diff suppressed because it is too large
Load Diff
10551
elections-scrapping/france_map.html
Normal file
10551
elections-scrapping/france_map.html
Normal file
File diff suppressed because one or more lines are too long
16
elections-scrapping/get_url_departements.py
Normal file
16
elections-scrapping/get_url_departements.py
Normal file
@ -0,0 +1,16 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
# URL de la page principale
|
||||
url = "https://www.resultats-elections.interieur.gouv.fr/europeennes2024/index.html"
|
||||
|
||||
# Récupérer le contenu HTML de la page
|
||||
response = requests.get(url)
|
||||
soup = BeautifulSoup(response.content, "html.parser")
|
||||
|
||||
# Extraire les attributs des éléments "g" dans "g#departements"
|
||||
departements_element = soup.find("div", id="container-map")
|
||||
if departements_element:
|
||||
dep_paths = departements_element.find_all("path")
|
||||
for dep_path in dep_paths:
|
||||
onclick = dep_path.get('onclick')
|
70
elections-scrapping/map_generate.py
Normal file
70
elections-scrapping/map_generate.py
Normal file
@ -0,0 +1,70 @@
|
||||
import json
|
||||
import folium
|
||||
|
||||
# Charger les données depuis le fichier JSON
|
||||
with open("elections_2024.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Charger les coordonnées des départements depuis le fichier GeoJSON
|
||||
with open("departements.geojson", "r") as f:
|
||||
departements_geo = json.load(f)
|
||||
|
||||
# Créer une carte centrée sur la France
|
||||
m = folium.Map(location=[46.2276, 2.2137], zoom_start=6)
|
||||
|
||||
# Définir les couleurs pour le gradient
|
||||
colors = ['#f2f0f7', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d']
|
||||
|
||||
# Calculer la valeur maximale de pourcentage_exprimes
|
||||
max_percent_exprimes = max(float(value["pourcentage_exprimes"].replace(',', '.')) for departement, values in data.items() for value in values if value["parti"] == "PARTI PIRATE")
|
||||
|
||||
# Parcourir les départements et ajouter des polygones avec le gradient de couleur
|
||||
for departement, values in data.items():
|
||||
for value in values:
|
||||
if value["parti"] == "PARTI PIRATE":
|
||||
percent_exprimes = float(value["pourcentage_exprimes"].replace(',', '.'))
|
||||
color_index = int((percent_exprimes / max_percent_exprimes) * (len(colors) - 1))
|
||||
print(color_index)
|
||||
color = colors[color_index]
|
||||
for feature in departements_geo["features"]:
|
||||
if feature["properties"]["code"] == departement:
|
||||
# Ajouter le champ percent_exprimes à l'élément GeoJSON
|
||||
feature["properties"]["percent_exprimes"] = percent_exprimes
|
||||
folium.GeoJson(
|
||||
feature,
|
||||
name=f"Département {departement}",
|
||||
style_function=lambda x: {
|
||||
"fillColor": color,
|
||||
"color": "black",
|
||||
"weight": 1,
|
||||
"fillOpacity": 0.7
|
||||
},
|
||||
tooltip=folium.features.GeoJsonTooltip(
|
||||
fields=['nom', 'percent_exprimes'],
|
||||
aliases=['Département:', 'Pourcentage:'],
|
||||
style=f"background-color: {color};font-size: 1.5rem;",
|
||||
localize=True,
|
||||
sticky=False,
|
||||
labels=True,
|
||||
max_width=100,
|
||||
direction='auto',
|
||||
prefix='<b>',
|
||||
suffix='</b>'
|
||||
),
|
||||
popup=folium.features.GeoJsonPopup(
|
||||
fields=['percent_exprimes'],
|
||||
aliases=['Pourcentage:'],
|
||||
style="background-color: white; font-size: 1.5rem;",
|
||||
localize=True,
|
||||
sticky=False,
|
||||
labels=True,
|
||||
max_width=100,
|
||||
direction='auto'
|
||||
)
|
||||
).add_to(m)
|
||||
|
||||
# Ajouter une légende
|
||||
m.add_child(folium.LayerControl())
|
||||
|
||||
# Enregistrer la carte en HTML
|
||||
m.save("france_map.html")
|
182
elections-scrapping/scrap.py
Normal file
182
elections-scrapping/scrap.py
Normal file
@ -0,0 +1,182 @@
|
||||
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)
|
Loading…
Reference in New Issue
Block a user