1

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

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

但是,当我在同一棵树上执行此操作时:

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

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

4

1 回答 1

2

似乎您正在处理 XHTML,因此您可以html在评估 XPath 表达式之前注册名称空间:

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

另请参阅命名空间和前缀

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

于 2011-08-20T13:19:15.270 回答