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

0 投票
2 回答
2134 浏览
提问于 2025-04-16 20:00

我一直在尝试通过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

我建议你首先保存一个只包含xml内容的文本文件:

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

确保文件末尾没有多余的字符。然后检查一下解析是否正常。如果可以正常解析,那就说明是通信方面的问题,你需要想办法“清理”一下你收到的数据。

祝你好运!

1

你忘了在响应对象上调用内容了。这样才能得到实际的xml数据。

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

撰写回答