2015-09-18 4 views
1

Я использую библиотеку запросов в Python для работы с API компании.Ссылка на результаты XML с использованием библиотеки запросов Python

Однако результаты представлены в формате XML.

Как я могу ссылаться на данные, которые я хочу на Python или с помощью запросов? Есть ли возможность конвертировать эти данные в JSON?

Вот пример:

XML:

<result xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Starbucks.Location.WebAPI.Models"> 
<paging> 
    <total>21933</total> 
    <offset>0</offset> 
    <limit>10</limit> 
    <returned>10</returned> 
</paging> 
<stores> 
    <store> 
     <id>1</id> 
     <name>Store1</name> 
     <brandName>BrandName</brandName> 
     <storeNumber>34601-20281</storeNumber> 
    </store> 
    <store> 
     <id>2</id> 
     <name>Store2</name> 
     <brandName>BrandName</brandName> 
     <storeNumber>20281</storeNumber> 
    </store> 

Мой Python код выглядит немного что-то вроде этого:

for i in range(0, 1): 
    myParameters = {'limit': '50', 'offset': i*50} 
    response = requests.get(url, params=myParameters) 

    print response #Here is where I want to print the data in json format 

В этом примере ответ возвращает XML-формат ,

Я хотел бы создать csv или текстовый файл или что-то, используя определенные атрибуты каждого магазина. Например, возьмите идентификатор магазина и поместите его в столбец в файле csv.

Но я не знаю, как ссылаться на тег id в результате xml. Я полагал, что преобразование данных в json поможет, но когда я буду использовать Requests .json() или json library, я получаю ошибку: No JSON object could be decoded

+2

использовать XML-парсер –

ответ

1

Есть много XML-парсеров, однако, поскольку вы заинтересованы в получении JSON, вы можете захотеть попробуйте xmltodict с json, который может достать вас в одной строке.

json.dumps(xmltodict.parse(response)) 
+0

Спасибо! Поэтому он возвращает объект json, но когда я пытаюсь получить информацию, я получаю сообщение об ошибке: 'TypeError: строковые индексы должны быть целыми числами, а не str' Код, который я использую, -' newResponse ['result'] ['stores'] [ 1] ['name'] ' – auto

+0

Кажется, у вас есть Json-массив вместо dict in результата, store или name-try, чтобы пройти один слой за раз, пока вы не выясните смешение. – John

+0

Ну, ошибка происходит с newRespone [ 'result'] ... первый слой ... – auto

Смежные вопросы