mirror of
https://forge.chapril.org/tykayn/wololo
synced 2025-06-20 01:34:42 +02:00
script comparant le baromètre avere et le nombre de points de charge dans les données ouvertes irve
This commit is contained in:
parent
2e05c12f79
commit
7dffcdf675
1 changed files with 79 additions and 0 deletions
79
wip/get_avere_data.py
Normal file
79
wip/get_avere_data.py
Normal file
|
@ -0,0 +1,79 @@
|
|||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
def extract_info_from_title(title):
|
||||
# Extraire le nombre de points de recharge
|
||||
nombre_match = re.search(r'(\d+\s*\d*)', title)
|
||||
nombre = int(nombre_match.group(1).replace(' ', '')) if nombre_match else None
|
||||
|
||||
# Extraire la date
|
||||
date_match = re.search(r'fin (\w+) (\d{4})', title)
|
||||
if date_match:
|
||||
mois = date_match.group(1)
|
||||
annee = date_match.group(2)
|
||||
date = f"{mois} {annee}"
|
||||
else:
|
||||
date = None
|
||||
|
||||
return {
|
||||
"nombre_points": nombre,
|
||||
"date": date
|
||||
}
|
||||
|
||||
def get_avere_data():
|
||||
# URL de la page AVERE
|
||||
url = "https://www.avere-france.org/publications/?publication-type%5B%5D=barometres-recharge"
|
||||
|
||||
# En-têtes pour simuler un navigateur
|
||||
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:
|
||||
# Effectuer la requête HTTP
|
||||
response = requests.get(url, headers=headers)
|
||||
response.raise_for_status()
|
||||
|
||||
# Parser le HTML
|
||||
soup = BeautifulSoup(response.text, 'html.parser')
|
||||
|
||||
# Trouver la première entrée dans la liste des publications
|
||||
posts_list = soup.find('ul', class_='posts-list')
|
||||
if posts_list:
|
||||
first_title = posts_list.find('h3', class_='card-title')
|
||||
if first_title:
|
||||
title_text = first_title.text.strip()
|
||||
return extract_info_from_title(title_text)
|
||||
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
print(f"Erreur lors de la récupération des données : {str(e)}")
|
||||
return None
|
||||
|
||||
def count_irve_features():
|
||||
try:
|
||||
with open('../etalab_data/irve_bornes_recharge/latest.json', 'r') as f:
|
||||
data = json.load(f)
|
||||
return len(data.get('features', []))
|
||||
except Exception as e:
|
||||
print(f"Erreur lors de la lecture du fichier JSON : {str(e)}")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Récupérer les données AVERE
|
||||
avere_data = get_avere_data()
|
||||
if avere_data and avere_data['nombre_points']:
|
||||
print(f"Données AVERE : {avere_data['nombre_points']} points de recharge (date: {avere_data['date']})")
|
||||
|
||||
# Compter les points dans l'open data
|
||||
irve_count = count_irve_features()
|
||||
if irve_count is not None:
|
||||
difference = avere_data['nombre_points'] - irve_count
|
||||
print(f"Nombre de points dans l'open data : {irve_count}")
|
||||
print(f"Différence : {difference} points manquants dans l'open data")
|
||||
pourcentage_manquant = (difference / avere_data['nombre_points']) * 100
|
||||
print(f"Pourcentage manquant : {pourcentage_manquant:.1f}%")
|
Loading…
Add table
Add a link
Reference in a new issue