Nokogiri在CSS选择器中的两个注意事项



现在我有一个选择器与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')

相关内容

  • 没有找到相关文章

最新更新