我在页面中有一个如下所示的元素:
<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"]')