python – 使用lxml.html的cssselect在ID属性中选择带冒号的元素

我在页面中有一个如下所示的元素:

<a id="cid-694094:Comment:188384" name="694094:Comment:188384"></a>

如果你做document.cssselect(“#cid-694094:评论:188384”),你会得到:

lxml.cssselect.ExpressionError: The psuedo-class Symbol(u’Comment’, 12) is unknown

该解决方案在this question(该人使用Java)处理.

但是,当我在Python中尝试这样的时候:

document.cssselect(r"#cid-694094\:Comment\:188384")

我明白了:

lxml.cssselect.SelectorSyntaxError: Bad symbol ‘cid-694094\’: ‘unicodeescape’ codec can’t decode byte 0x5c in position 10: \ at end of string at [Token(u’#’, 0)] -> None

其原因和建议的解决方案可以在this question找到.如果我理解正确,我应该这样做:

document.cssselect(r"#cid-694094\\:Comment\\:188384")

但这仍然行不通.相反,我再一次得到:

lxml.cssselect.ExpressionError: The psuedo-class Symbol(u’Comment\’, 14) is unknown

谁能告诉我我做错了什么?

自己尝试使用:

import lxml.html
document = lxml.html.fromstring(
    '<a id="cid-694094:Comment:188384" name="694094:Comment:188384"></a>'
)
document.cssselect(r"#cid-694094\:Comment\:188384")

解决方法:

不是:not allowed in css for id还是class?

这是一个解决方法:

document.xpath('//a[@id="cid-694094:Comment:188384"]')
上一篇:如何安装python的第三方库?


下一篇:python – Xpath normalize-space