import json import geopandas as gpd from bs4 import BeautifulSoup from shapely.geometry import Point # Charger le fichier HTML with open("liste.html", "r") as file: html = file.read() # Analyser le code HTML avec BeautifulSoup soup = BeautifulSoup(html, "html.parser") # Trouver toutes les balises
qui contiennent les informations des antennes articles = soup.find_all("article", class_="node node--type-hp-antenne node--view-mode-map-result") # Liste pour stocker les données de chaque antenne antennes = [] # Parcourir chaque article et extraire les informations for article in articles: titre = article.find("button", class_="nsb action-title").text.strip() adresse = article.find("p", class_="address").text.strip() # Gérer les articles qui n'ont pas de numéro de téléphone telephone = "" try: telephone = article.find("p", class_="tel").text.strip() except AttributeError: pass latitude = float(article["data-latlng"].split(",")[0].replace("[", "").replace('"', "")) longitude = float(article["data-latlng"].split(",")[1].replace("]", "").replace('"', "")) geometry = Point(longitude, latitude) antenne = { "type": "Feature", "geometry":geometry, "properties": { "nom": titre, "adresse": adresse, "telephone": telephone }, } print(antenne) antennes.append(antenne) # Convertir la liste des antennes en un GeoDataFrame gdf = gpd.GeoDataFrame(antennes) # Exporter le GeoDataFrame au format GeoJSON gdf.to_file("antennes_planning_familial.json", driver="GeoJSON")