我目前正在尝试从Wikipedia获取XML并使用XML解析它。我的一般设置如下:
import requests
import xml.etree.cElementTree as etree
payload = {'pages': 'Apple', 'action': 'submit', 'offset' : '2008-01-24 09:39:22'}
r = requests.post('http://en.wikipedia.org/w/index.php?title=Special:Export', params=payload, stream=True)
xmlIterator = etree.iterparse(r.raw, events=("start","end"))
当我执行解析语法时,出现以下错误:
for event, element in self.xmlIterator:
File "<string>", line 107, in next
ParseError: no element found: line 249375, column 2
我尝试了同样的方法,urllib接收相同的错误。对于这种特定的XML似乎也会发生这种情况,其他的工作正常。
但奇怪的是如下:如果我将响应存储到文件然后将文件传递给XML解析器,它可以正常工作。 。E.g,:
open("test.xml","w").write(r.text.encode('utf-8'))
xmlIterator = etree.iterparse("test.xml", events=("start","end"))
再次,urllib的行为相同。
有没有人知道问题可能是什么?