Extraction de données depuis un fichier XML
Bonjour ,
J'aie une API qui ne renvoie ni un dictionnaire , ni une liste , ni un fichier JSON mais un fichier XML .
Quelle est la bonne approche pour extraire les datas d'un fichier XML ?
Par exemple , je souhaiterais extraires les datas de l'OECD
Ci dessous l'API en question qui me renvoie un formatage XML .
https://sdmx.oecd.org/public/rest/data/OECD.SDD.NAD,DSD_NAMAIN10@DF_TABLE4,/A.AUS+AUT+BEL+CAN+CHL+COL+CRI+CZE+DNK+EST+FIN+FRA+DEU+GRC+HUN+ISL+IRL+ISR+ITA+JPN+KOR+LVA+LTU+LUX+MEX+NLD+NZL+NOR+POL+PRT+SVK+SVN+ESP+SWE+CHE+TUR+GBR+USA...PPP_B1GQ.......?startPeriod=2014&dimensionAtObservation=AllDimensions
Merci
Salut,
Alors, j'ai toujours eu à bosser avec du json, mais voici ce que tu peux faire :
Récupérer les données
Tu peux aller chercher tes données avec requests : https://requests.readthedocs.io/en/latest/
Parser les données
Tu peux utiliser cette librairie : https://lxml.de/
En gros tu pourrais faire un truc du genre :
import requests
from lxml import etree
url = "ton_url_ici"
response = requests.get(url)
# Puis commencer à parser
etree.fromstring(response.content)
Je ne suis pas aller sur ton url, mais pour le xml, avec ces librairies tu ne devrais pas avoir de soucis :)
Après, pour info il existe une librairie standard : https://docs.python.org/3/library/xml.etree.elementtree.html
A bientôt :)
Bonjour ,
Finalement , je me suis rabattu sur l'utilisation du module beautifulsoup qui dispose de 3 parseurs dont un en XML .
Ci dessous ma solution pour extraire de la data sur le site de l'OECD .
import requests
import bs4
url = 'https://sdmx.oecd.org/public/rest/data/OECD.SDD.NAD,DSD_NAMAIN10@DF_TABLE4,/A.AUS+AUT+BEL+CAN+CHL+COL+CRI+CZE+DNK+EST+FIN+FRA+DEU+GRC+HUN+ISL+IRL+ISR+ITA+JPN+KOR+LVA+LTU+LUX+MEX+NLD+NZL+NOR+POL+PRT+SVK+SVN+ESP+SWE+CHE+TUR+GBR+USA...PPP_B1GQ.......?startPeriod=2014&dimensionAtObservation=AllDimensions'
response = requests.get(url)
soup = bs4.BeautifulSoup(response.content, 'xml')
xml_tag = soup.find_all('generic:Value')
xml_ObsValueTag = soup.find_all('generic:ObsValue')
for attr in xml_ObsValueTag:
print(attr['value'])
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte