解析python中的xml文档(在url上)

时间:2015-04-04 11:38:17

标签: python xml xml-parsing xml.etree

我正在尝试使用请求

解析xml文档(URL)

面临以下错误:

ValueError: Unicode strings with encoding declaration are not supported

这是我的代码:

import requests
from lxml import etree
from lxml.etree import fromstring

req = requests.request('GET', "http://www.nbp.pl/kursy/xml/LastC.xml")

a = req.text
b = etree.fromstring(a)

我怎样才能解析这个xml。在此先感谢您的帮助

1 个答案:

答案 0 :(得分:4)

您正在传递 Unicode解码版。不要这样做,XML解析器要求你传入原始字节。

而不是req.text,请在此处使用req.content

a = req.content
b = etree.fromstring(a)

您还可以 XML文档流式传输到解析器:

req = requests.get("http://www.nbp.pl/kursy/xml/LastC.xml", stream=True)
req.raw.decode_content = True  # ensure transfer encoding is honoured
b = etree.parse(req.raw)