lxml.etree.XPathEvalError: 无效谓词



我收到以下lxml.etree.XPathEvalError: Invalid predicate错误:

回溯(最近一次调用(:

文件 "check_1337.py",第 18 行,在

//div[@class = "_3iyw"]//div[@class = "_6beq _7cdk _6beo"]//div[@class = "_7om2 _3gim _ 7cdk"]//div [@class = "5s61"]//div[@class = "_7cdi"]')

文件 "src\lxml\etree.pyx", 第 1583 行, 在 lxml.etree._Element.xpath 中

文件 "src\lxml\xpath.pxi", 第 305 行, in lxml.etree.XPathElementEvaluator.

文件 "src\lxml\xpath.pxi",第 225 行,在 lxml.etree._XPathEvaluatorBase._handle_result 中

lxml.etree.XPathEvalError: 无效谓词

从以下代码:

from lxml.etree import HTML
import requests
url = "https://m.facebook.com/?_rdr"
response = requests.get(url)
root = HTML(response.content)
tempII = root.find("body").xpath('//div[@id = "viewport"]//div[@id = "page"]//div[@id = "rootcontainer]//div[@class = "async_compose _2v9s"]//div[@id = "MRoot"]
//div[@class = "_3iyw"]//div[@class = "_6beq _7cdk _6beo"]//div[@class = "_7om2 _3gim _ 7cdk"]//div [@class = "5s61"]//div[@class = "_7cdi"]')
print (tempII)

你能帮我找出这个错误的原因吗?

看看你的查找调用中的根容器。 在这个词之前,你加一个双引号(这没关系(, 但未能在它后面加上另一个双引号。

另一个细节:稍后你有:@class = "_7om2 _3gim _ 7cdk"。

你确定这里应该有四个类(_7om2_3gim_7cdk(?

使用"_"作为类名是一种奇怪的做法。 也许应该有一个班级而不是最后 2 节课_7cdk? 请注意,稍早一点,您刚刚_7cdk

此缺陷不太可能导致任何异常,但查找的结果可能是空的。 编写此类谓词时要小心,因为这样的错误非常严重 难以识别。

最新更新