如何通过CSS而不是XPath选择具有文本内容的元素?

时间:2009-09-28 01:37:21

标签: ruby nokogiri

Nokogiri: How to select nodes by matching text?”可以通过XPath执行此操作,但是,我正在寻找一种方法来使用与元素文本匹配的CSS选择。

PyQuery和PHPQuery可以做到这一点。是不是有Ruby的jQuery API库?

2 个答案:

答案 0 :(得分:15)

Nokogiri(现在)实现了jQuery选择器,可以搜索节点的文本:

例如:

require 'nokogiri'

html = '
<html>
  <body>
    <p>foo</p>
    <p>bar</p>
  </body>
</html>
'

doc = Nokogiri::HTML(html)
doc.at('p:contains("bar")').text.strip
=> "bar"

答案 1 :(得分:3)

不能用纯CSS完成,你必须将它与Ruby代码混合

  doc = Nokogiri::HTML("<p>A paragraph <ul><li>Item 1</li><li>Apple</li><li>Orange</li></ul></p>")
  p doc.css('li').select{|li|li.text =~ /Apple/}