2011-08-20 140 views
1

我试图从页面获取一些元素。不幸的是它带有一个空的列表。漂亮的印刷树包括这个元素:Xpath不匹配

<html:a title="..." href="..." id="..." class="topic_title">...</html:a> 

但是我这样做在同一棵树上时:

page.xpath('''.//a[@class="topic_title"]''') 

我得到一个空列表。该树是使用html5lib/lxml treebuilder创建的。

回答

2

看来,如果你正在处理XHTML,所以你可以评估XPath表达式之前注册了命名空间html

page.xpath('''.//html:a[@class="topic_title"]''', 
      namespaces={'html': 'http://www.w3.org/1999/xhtml'}) 

Namespaces and Prefixes参见:

如果你的XPath表达式使用命名空间前缀,你必须在前缀映射中定义它们。为此,将一个字典传递给namespaces关键字参数,该参数将XPath表达式中使用的名称空间前缀映射到名称空间URI。