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