解析XML时出现xml.parsers.expat.ExpatError

时间:2011-06-21 13:02:15

标签: python xml httpwebrequest xml-parsing elementtree

我一直在尝试通过HTTP查询检索信息,例如

http://www.opencellid.org/cell/get?key=xxxxxxxxxxxxx&mnc=1&mcc=228&lac=101&cellid=7283

以XML格式返回一个响应,如

<rsp stat="ok">
<cell nbSamples="1" mnc="1" lac="101" lat="46.52079" lon="6.56676" cellId="7283" mcc="228" range="6000"/>
</rsp>

我尝试使用responseurllib模块打开网址,然后使用elementtree.ElementTree进行解析。

代码段:

url = 'http://www.opencellid.org/cell/get?key=xxxxxxxxxx&mnc=1&mcc=228&lac=101&cellid=7283 '
rss = parse(requests.get(url = url)).getroot()
pprint(rss)

但是我收到以下错误:

xml.parsers.expat.ExpatError: junk after document element: line 5, column 0

只需打印响应即可生成HTML成功代码。请帮忙!

2 个答案:

答案 0 :(得分:1)

您忘记在响应对象上调用内容。这就是你获得实际xml的方法。

content = requests.get(url = url).content
rss = parse(content).getroot()

答案 1 :(得分:0)

我建议的第一件事就是只保存带有xml内容的文本文件:

 <rsp stat="ok">
    <cell nbSamples="1" mnc="1" lac="101" lat="46.52079" lon="6.56676" cellId="7283" mcc="228" range="6000"/>
 </rsp>

确保最后没有尾随字符。然后检查解析是否有效。 如果确实如此,那么你就知道它存在通信问题,然后必须弄清楚如何“清理”你正在接收的内容。

祝你好运!