Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Nokogiri的CSS选择器中的两个Not_Css_Ruby_Nokogiri - Fatal编程技术网

使用Nokogiri的CSS选择器中的两个Not

使用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-

现在,我有一个使用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-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')