从URL解析XML为Python对象

37 投票
3 回答
96904 浏览
提问于 2025-04-18 09:09

goodreads网站提供了一个API,可以用来访问用户的“书架”。这个链接就是用来获取书架上书籍的:https://www.goodreads.com/review/list/20990068.xml?key=nGvCqaQ6tn9w4HNpW8kquw&v=2&shelf=toread

这个API会返回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)

我不太确定这样处理这个对象是否正确。我正在按照这个教程进行学习。

3 个回答

12

这里提到的是一个叫做 xmltodict 的工具,它可以帮助我们把 XML 格式的数据转换成 Python 字典的形式。还有一个叫做 requests 的库,它可以让我们轻松地从网上获取数据。

简单来说,xmltodictrequests 可以一起使用,先用 requests 从网络上获取 XML 数据,然后用 xmltodict 把这些数据转成 Python 可以更方便处理的字典格式。

import requests
import xmltodict

url = "https://yoursite/your.xml"
response = requests.get(url)
data = xmltodict.parse(response.content)
12

这里提到的是一个叫做 xmltodict 的工具,它可以帮助我们把 XML 格式的数据转换成 Python 字典的形式。XML 是一种常用的数据格式,而字典则是 Python 中用来存储数据的一种方式,像是一个可以通过键来快速查找值的表格。

同时,这里还提到了 urllib3,这是一个用于处理网络请求的库。简单来说,它可以帮助我们从网上获取数据,比如从一个网站上下载信息。

结合这两个工具,我们可以先用 urllib3 从网络上获取 XML 数据,然后用 xmltodict 把这些数据转换成更容易操作的字典格式。

import traceback
import urllib3
import xmltodict

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

    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
48

我会使用xmltodict这个工具,把XML数据结构转换成一个Python字典,然后把这个字典放到模板的上下文中。

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})

撰写回答