解析bit.ly的XML响应
我在试用 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
是一个元素,它里面有一个子文本节点,那个节点里包含了你需要的数据。