0

我正在使用 Nokogiri,但遇到了伪选择器链接问题。

这些工作:

document.at_css(".link:not(.button)")
document.at_css(".link:after")

但这不会

document.at_css(".link:not(.button):after")

我收到一条相当长的错误消息:

/Users/me/.rvm/gems/ruby-2.0.0-p195/gems/nokogiri-1.6.0/lib/nokogiri/css/parser_extras.rb:87:in `on_error':
unexpected ':' after '[#<Nokogiri::CSS::Node:0x007fc9540932b8 @type=:CONDITIONAL_SELECTOR, @value=[#<Nokogiri::CSS::Node:0x007fc954093da8 @type=:ELEMENT_NAME, @value=["*"]>, #<Nokogiri::CSS::Node:0x007fc954093f38 @type=:COMBINATOR, @value=[#<Nokogiri::CSS::Node:0x007fc95409b350 @type=:CLASS_CONDITION, @value=["link"]>, #<Nokogiri::CSS::Node:0x007fc95409ab80 @type=:NOT, @value=[#<Nokogiri::CSS::Node:0x007fc95409acc0 @type=:CLASS_CONDITION, @value=["button"]>]>]>]>]' 
(Nokogiri::CSS::SyntaxError)

我该如何解决这个问题?

4

2 回答 2

3

After 并不是真正的选择器。你可能需要解释你想要做什么,否则我建议:

document.at(".link:not(.button)").after "content"
于 2013-06-27T01:53:04.953 回答
2

如果没有示例 HTML,很难说出你在追求什么,但我会从替换以下内容开始尝试一下:

document.at_css(".link:not(.button):after")

和:

document.css(".link").reject{ |n| n['class'][/\b button \b/ix] }.first.next_sibling

我读过一些 CSS 与 jQuery 不完全匹配的评论,因此需要解决方法。看一眼:

https://github.com/sparklemotion/nokogiri/issues/907

doc.css("input:not([disabled])").count解决方法可能有用。

https://github.com/sparklemotion/nokogiri/blob/master/ROADMAP.md

于 2013-06-27T00:05:14.753 回答