我有一个通过导出某个类别的所有页面创建的Wikipedia XML转储 . 您可以通过在https://en.wikipedia.org/wiki/Special:Export为自己生成一个XML文件来查看此XML文件的确切结构 . 现在我想用Python列出每篇文章的 Headers . 我尝试过使用:
import xml.etree.ElementTree as ET
tree = ET.parse('./comp_sci_wiki.xml')
root = tree.getroot()
for element in root:
for sub in element:
print sub.find("title")
什么都没打印 . 这似乎应该是一个相对简单的任务 . 您可以提供的任何帮助将非常感激 . 谢谢!
1 回答
如果查看导出文件的开头,您将看到该文档声明了一个默认的XML命名空间:
这意味着文档中没有未命名空间的"title"元素,这是您的
sub.find("title")
语句失败的一个原因 . 如果要打印出root
元素,可以看到这个:请注意,它没有说
<Element 'mediawiki'>
. 标识符包括完整名称空间 . This document详细描述了如何在XML文档中使用命名空间,但是tl; dir版本是您需要的:如果您要安装包含完整xpath支持的
lxml
模块,那么您的生活可能会更容易,这样您就可以执行以下操作:无论如何,请阅读有关名称空间支持的文档,并希望加上这些示例将指向正确的方向 . 需要注意的是XML命名空间很重要,并且一个命名空间中的
title
与另一个命名空间中的title
不同 .