现在我有一个选择器与jQuery工作如下:
.original-tweet:not([data-is-reply-to="true"],.retweeted)
然而,在ruby中使用Nokogiri gem似乎不起作用:
doc.css('.original-tweet:not([data-is-reply-to="true"],.retweeted)')
以上导致一个现金,但每个部分不能独立工作:
doc.css('.original-tweet:not([data-is-reply-to="true"])')
和
doc.css('.original-tweet:not(.retweeted)')
获得我想要的选择器的最好方法是什么。这是nokoogiri中不支持的吗?
好的,我用XPATH解决了
下面的工作(注意:我创建的xpath完全是计算机生成的)
doc.xpath("//*[contains(concat(' ', @class, ' '), ' original-tweet ') and not(@data-is-reply-to = "true") and not(@data-retweet-id)]")
编辑:进一步检查表明,这仍然是选择项目与retweted类(原来这是一个错误的假设对我来说,我应该一直在寻找data-retweet-id属性而不是retweet类)
github.com/sparklemotion/nokogiri/issues/451—这个问题与我为什么需要在这里使用xpath有关。
虽然选择器可以与jQuery一起工作,但它不是一个有效的CSS选择器:
> $$('.original-tweet:not([data-is-reply-to="true"], .retweeted)')
Error: SyntaxError: DOM Exception 12
.original-tweet:not([data-is-reply-to="true"]):not(.retweeted)
应该可以工作
目前可能的解决方法是:
doc.css('.original-tweet:not([data-is-reply-to="true"])') - doc.css('.retweeted')