我正在尝试从页面中获取一些元素。不幸的是,它导致一个空列表。漂亮打印的树包含以下元素:
<html:a title="..." href="..." id="..." class="topic_title">...</html:a>
但是,当我在同一棵树上执行此操作时:
page.xpath('''.//a[@class="topic_title"]''')
我得到一个空列表。该树是使用 html5lib / lxml treebuilder 创建的。
似乎您正在处理 XHTML,因此您可以html
在评估 XPath 表达式之前注册名称空间:
page.xpath('''.//html:a[@class="topic_title"]''',
namespaces={'html': 'http://www.w3.org/1999/xhtml'})
另请参阅命名空间和前缀:
如果您的 XPath 表达式使用名称空间前缀,则必须在前缀映射中定义它们。为此,将字典传递给命名空间关键字参数,将 XPath 表达式中使用的命名空间前缀映射到命名空间 URI。