Конвертировать XML-ответ в Python Dataframe - PullRequest
0 голосов
/ 28 января 2019

http://stat.data.abs.gov.au/restsdmx/sdmx.ashx/GetDataStructure/all

По приведенной выше ссылке мы получаем список наборов данных, доступных в http://www.abs.gov.au/

Мне нужно извлечь все идентификаторы и имена наборов данных на английском и французском языках

Идентификатор KeyFamily как «Идентификатор набора данных»

Имя xml: lang = «en» как «Английский для набора данных»

Имя xml: lang = "fr" как «Имя набора данных по-французски»

Из таблицы: «message: KeyFamilies»

Источник:

enter image description here

Пример кода:

import requests
import pandas as pd
import xml.etree.ElementTree as ET

URL = 'http://stat.data.abs.gov.au/restsdmx/sdmx.ashx/GetDataStructure/all'

print('\n> Retrieving XML Data:', URL)
XML_Data = requests.get(URL).content
print('>> XML_Data:', len(XML_Data))

def xml2df(XML_Data):
    root = ET.XML(XML_Data) # element tree
    all_records = []
    for i, child in enumerate(root):
    print(i)
    record = {}
    for subchild in child:
        record[subchild.tag] = subchild.text
    all_records.append(record)
    df = pd.DataFrame(all_records)

    return df

df = xml2df(XML_Data)

1 Ответ

0 голосов
/ 28 января 2019

После долгой работы ниже код дает то, что я ожидал.

import requests, csv
import pandas as pd
import xml.etree.ElementTree as ET

URL = 'http://stat.data.abs.gov.au/restsdmx/sdmx.ashx/GetDataStructure/all'

print('\n> Retrieving XML Data:', URL)
XML_DF = requests.get(URL).content
print('>> XML_DF:', len(XML_DF))

root = ET.XML(XML_DF) # element tree
XML_List = []
for child in root[1]:
    XML_Dict = {}
    XML_Dict['Dataset_Id'] = child.attrib['id']
    for subchild in child:
    if ''.join(subchild.attrib.values()) == 'en':
        XML_Dict['Dataset_Name_EN'] = subchild.text
    elif ''.join(subchild.attrib.values()) == 'fr':
        XML_Dict['Dataset_Name_FR'] = subchild.text

    XML_List.append(XML_Dict)
XML_DF = pd.DataFrame(XML_List)

XML_DF.to_csv(r"D:\Sunil_Work\Dataset List.csv", index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...