代码之家  ›  专栏  ›  技术社区  ›  Ξένη Γήινος

Python lxml.html语法错误:使用lxml find时XPATH的谓词无效

  •  0
  • Ξένη Γήινος  · 技术社区  · 2 月前

    我使用的是CPython 3.12.6,lxml 5.3.1,Windows 11 Pro 23H2 x64。

    以下Python代码引发了一个异常:

    tree.find(".//table[contains(@class, 'wikitable')]//tr")
    
    SyntaxError: invalid predicate
    

    有趣的是,以下作品:

    tree.xpath(".//table[contains(@class, 'wikitable')]//tr")
    

    为什么?

    我试图理解为什么在这种情况下,使用 lxml.html 库,使用相同的XPATH,调用 .find 与它在一个 lxml.html.HtmlElement 对象引发异常,但调用 .xpath 在同一对象上使用完全相同的XPATH成功。它们不应该是一样的吗?

    1 回复  |  直到 2 月前
        1
  •  1
  •   mzjn    2 月前

    find() xpath() .

    这个 find() 方法来自ElementTree API,它只支持XPath1.0的一个子集。 contains() 是不受支持的功能之一。

    更多信息: