我有一个Python脚本,大约一个月前停止工作。但在那之前,它几个月(如果不是几年)完美无缺。下面提供了一个很小的独立7行脚本来演示这个问题。
我遇到了xml.dom.minidom的XML解析问题,错误消息包含在下面。奇怪的是,如果我在网络上使用XML验证器来直接验证这个特定的URL,那一切都很好。此外,我在Firefox或Chrome中保存了页面源,然后根据保存的XML文件进行了验证,这一切都很好。
由于错误发生在输入的最开始(第1行,第0列),如下所示,我想知道这是否是编码不匹配。但是,根据FireFox或Chrome中保存的页面源,开头有以下内容:
xml version =“1.0”encoding =“UTF-8”
<program>
=================================================
#!/usr/bin/env python
import urllib2
from xml.dom.minidom import parseString
fd = urllib2.urlopen('http://api.worldbank.org/countries')
data = fd.read()
fd.close()
dom = parseString(data)
=================================================
<error msg>
=================================================
Traceback (most recent call last):
File "./bugReport.py", line 9, in <module>
dom = parseString(data)
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1931, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 0
=================================================
我在Ubuntu 13.10上运行Python 2.7.5+。
感谢。
答案 0 :(得分:0)
http://api.worldbank.org/countries以[{3}}回复,即使urllib2无法处理它并且不会要求它。你必须手动枪杀响应。请参阅:Content-Encoding
of gzip
。