Xpath不匹配

时间:2011-08-20 13:07:28

标签: python html xpath lxml html5lib

我正试图从页面中获取一些元素。不幸的是,它会产生一个空列表。漂亮打印的树包含以下元素:

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

然而,当我在同一棵树上这样做时:

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

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

1 个答案:

答案 0 :(得分: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。