解析bit.ly的XML响应

1 投票
2 回答
1197 浏览
提问于 2025-04-16 01:22

我在试用 bit.ly 的接口来缩短链接,结果成功了。它给我的脚本返回了一个 XML 文档。我想从中提取出某个标签,但好像解析得不太对。

askfor = urllib2.Request(full_url)
response = urllib2.urlopen(askfor)
the_page = response.read()

所以,the_page 里包含了这个 XML 文档。我尝试了:

from xml.dom.minidom import parse
doc = parse(the_page)

但是这导致了一个错误。我哪里做错了呢?

2 个回答

1
from xml.dom.minidom import parseString
doc = parseString(the_page)

请查看关于 xml.dom.minidom 的文档。

2

你没有提供错误信息,所以我不能确定这是不是唯一的错误。不过,xml.minidom.parse 这个函数不接受字符串。根据 parse 的文档说明:

通过文件名或文件对象将文件解析成一个DOM。

你应该尝试:

response = urllib2.urlopen(askfor)
doc = parse(response)

因为 response 会像一个文件对象一样工作。或者你也可以使用 minidom 中的 parseString 方法(然后把 the_page 作为参数传进去)。

编辑:要提取URL,你需要这样做:

url_nodes = doc.getElementsByTagName('url')
url = url_nodes[0]
print url.childNodes[0].data

getElementsByTagName 的结果是一个包含所有匹配节点的列表(在这个例子中只有一个)。正如你注意到的,url 是一个元素,它里面有一个子文本节点,那个节点里包含了你需要的数据。

撰写回答