1

我正在阅读来自 PyCon 2010 的 Asheesh Laroia 的“Scrape the Web”演示文稿,我对这一行的特定代码行有疑问:

title_element = parsed.getElementsByTagName('title')[0]

从功能:

def main(filename):
    #Parse the file
    parsed = xml.dom.minidom.parse(open(filename))
    # Get title element
    title_element = parsed.getElementsByTagName('title')[0]
    # Print just the text underneath it
    print title_element.firstChild.wholeText

我不知道该行末尾的“[0]”在执行什么角色。'xml.dom.minidom.parse' 是否将输入解析为列表?

4

2 回答 2

4

parse()不返回列表;getElementsByTagName()做。您要求所有带有标签的元素<title>。大多数标签可以在一个文档中出现多次,所以当你要求这些元素时,你会得到不止一个。返回它们的明显方法是作为列表或元组。

在这种情况下,您希望<title>文档中只有一个标签,因此您只需获取列表中的第一个元素。

于 2012-04-08T00:22:50.193 回答
2

该方法的 ( getElementsByTagName) 文档说:

搜索具有特定元素类型名称的所有后代(直接子代、子代的子代等)。

既然它提到了“所有后代”,那么是的,它返回一个列表,该代码只是索引以查看第一个元素。

查看此方法的代码(在 中Lib/xml/dom/minidom.py)——它确实返回了一个列表。

于 2012-04-08T00:20:07.520 回答