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