我正在使用以下网址打开网址:
response = urllib2.urlopen(url, data, timeout=_TIMEOUT)
并使用response.read()
,它给出以下输出:
<XMLlookup licenseid="X4X6X42" reason="OK" status="1" />
但是当我想使用ElementTree解析它时,如下所示:
print response.read()
t = ET.parse(response)
r = t.getroot()
print r.attrib.get('status')
给我以下错误消息:
File "<string>", line 62, in parse
File "<string>", line 38, in parse
cElementTree.ParseError: no element found: line 1, column 0
但是当我删除该行时response.read()
,代码可以正常工作。我究竟做错了什么?
您只能读取一次响应,因为它是一个类似(实际上是addinfourl)的文件对象。后续的调用read
将返回一个空字符串,因为您始终要阅读全文。
因此,要么read
在使用之前不调用ET.parse(response)
,要么将结果存储在字符串中并将其用于ET:
txt = response.read()
# do what you want with txt (without changing it)
t = ET.fromstring(txt)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句