2

我正在尝试使用请求解析 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 解析。提前感谢您的帮助

4

1 回答 1

4

您传入的是Unicode 解码版本。不要那样做,XML 解析器要求您传递原始字节。

而不是req.textreq.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)
于 2015-04-04T11:54:23.303 回答