【问题标题】:Xpath doesn't matchXpath 不匹配
【发布时间】:2011-08-20 13:07:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python html xpath lxml html5lib


    【解决方案1】:

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

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

    另见Namespaces and Prefixes

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

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多