使用Nokogiri的CSS选择器中的两个Not
现在,我有一个使用jQuery的选择器,如下所示:使用Nokogiri的CSS选择器中的两个Not,css,ruby,nokogiri,Css,Ruby,Nokogiri,现在,我有一个使用jQuery的选择器,如下所示: .original-tweet:not([data-is-reply-to="true"],.retweeted) 但是,在ruby中使用Nokogiri宝石似乎不起作用: doc.css('.original-tweet:not([data-is-reply-to="true"],.retweeted)') 上述情况会产生现金,但现金的每一部分都不能独立工作: doc.css('.original-tweet:not([data-is-
.original-tweet:not([data-is-reply-to="true"],.retweeted)
但是,在ruby中使用Nokogiri宝石似乎不起作用:
doc.css('.original-tweet:not([data-is-reply-to="true"],.retweeted)')
上述情况会产生现金,但现金的每一部分都不能独立工作:
doc.css('.original-tweet:not([data-is-reply-to="true"])')
及
获得我想要的选择器的最佳方式是什么。这是nokogiri不支持的吗 虽然选择器可以与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)
应该可以用。好的,我用XPATH解决了这个问题
下面的方法奏效了(注意:我创建的xpath完全是计算机生成的)
编辑:进一步检查表明,这仍然是使用Retweetd类选择项目(事实证明,这是一个错误的假设,我应该寻找数据retweet id属性,而不是retweet类)
github.com/sparklemotion/nokogiri/issues/451-这个问题与我为什么需要在这里使用xpath有关 目前,一个可能的解决方法可能是:
doc.css('.original-tweet:not([data-is-reply-to="true"])') - doc.css('.retweeted')
可悲的是,nokogiri仍然窒息而死that@LindseyB:什么是回溯?
parser_extras.rb:87:in_错误:意外):not(“[#@type=:CONDITIONAL_SELECTOR,@value=[#,#]>]”之后的“not”(Nokogiri::CSS::SyntaxError)
这个问题还有待解决。使用当前的XPath解决了吗?我无法从编辑中判断您是否修复了它。它基于最初的假设,所以我保留了它,而不是更新我的问题以使其更有效。值得注意的是,Nokogiri不支持许多jQuery CSS查询扩展,尽管这在Nokogiri 2.0的路线图。
doc.xpath("//*[contains(concat(' ', @class, ' '), ' original-tweet ') and not(@data-is-reply-to = \"true\") and not(@data-retweet-id)]")
doc.css('.original-tweet:not([data-is-reply-to="true"])') - doc.css('.retweeted')