Подтвердить что ты не робот

Анализ XML-кода из URL-адреса в объект python

На сайте goodreads есть этот API для доступа к полкам пользователя: https://www.goodreads.com/review/list/20990068.xml?key=nGvCqaQ6tn9w4HNpW8kquw&v=2&shelf=toread

Он возвращает XML. Я пытаюсь создать проект django, который показывает книги на полке из этого API. Я ищу, чтобы узнать, как (или, если есть лучший способ, чем) написать мой взгляд, чтобы я мог передать объект в мой шаблон. В настоящее время это то, что я делаю:

import urllib2

def homepage(request):
    file = urllib2.urlopen('https://www.goodreads.com/review/list/20990068.xml?key=nGvCqaQ6tn9w4HNpW8kquw&v=2&shelf=toread')
    data = file.read()
    file.close()
    dom = parseString(data)

Я не совсем уверен, как манипулировать этим объектом, если я делаю это правильно. Я следую за этим tutorial.

4b9b3361

Ответ 1

Я бы использовал xmltodict, чтобы сделать словарь python из структуры данных XML и передать этот словарь в шаблон внутри контекста:

import urllib2
import xmltodict

def homepage(request):
    file = urllib2.urlopen('https://www.goodreads.com/review/list/20990068.xml?key=nGvCqaQ6tn9w4HNpW8kquw&v=2&shelf=toread')
    data = file.read()
    file.close()

    data = xmltodict.parse(data)
    return render_to_response('my_template.html', {'data': data})

Ответ 2

xmltodict с использованием urllib3

import traceback
import urllib3
import xmltodict

def getxml()
    url = "https://yoursite/your.xml"
    import urllib3
    import xmltodict


    http = urllib3.PoolManager()

    response = http.request('GET', url)
    try:
        data = xmltodict.parse(response.data)
    except:
        print("Failed to parse xml from response (%s)" % traceback.format_exc())
    return data

Ответ 3

Используйте lxml objectify, он будет анализировать xml в объектах Python.