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