我正试图从页面中获取一些元素。不幸的是,它的结果是一个空列表。打印精美的树包含以下元素:
<html:a title="..." href="..." id="..." class="topic_title">...</html:a>
然而,当我在同一棵树上这样做时:
page.xpath('''.//a[@class="topic_title"]''')
我得到一个空列表。该树是用html5lib/lxml treebuilder创建的。
看起来好像正在处理XHTML,因此可以在计算XPath表达式之前注册名称空间html
:
page.xpath('''.//html:a[@class="topic_title"]''',
namespaces={'html': 'http://www.w3.org/1999/xhtml'})
参见名称空间和前缀:
如果XPath表达式使用名称空间前缀,则必须在前缀映射中定义它们。为此,将一个字典传递给namespaces关键字参数,该参数将XPath表达式中使用的名称空间前缀映射到名称空间uri。