如果我有一堆元素,比如:

<p>A paragraph <ul><li>Item 1</li><li>Apple</li><li>Orange</li></ul></p>

Nokogiri中是否有一个内置方法可以让我获得包含文本"Apple"的所有p个元素?(例如,上面的示例元素将匹配).

推荐答案

Nokogiri(现在)可以使用CSS的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"

Ruby相关问答推荐

RSpec:为什么 `instance_double` 可以与 StandardError 一起使用,但不能与其他异常类一起使用?

安全导航运算符的使用是否应该在两种情况下进行单元测试(对象存在 + 对象无)?

如何用 yield_self 断链

令人惊讶的有效 Ruby 语法:% 无处不在

Python 正则表达式是否等同于 Ruby 的原子分组?

创建线程安全的临时文件名

是否有类似于 Ruby 的 Sinatra 的 .NET 框架?

将 pp 的结果(或输出到控制台的任何内容)放入字符串

Sinatra + Bundler?

hash['key'] 到 Ruby 中的 hash.key

Ruby 1.9 - 无效的多字节字符(US-ASCII)

Ruby 中的 -> (stab) 运算符是什么?

Ruby:module、require和include

动态设置 Ruby 对象的属性

如何通过拆分字符的最后一次出现将字符串拆分为仅两部分?

在 Ruby 中按名称获取一个类?

Ruby中的file.open、open和IO.foreach,有什么区别?

rbenv、rvm 和 chruby 有什么区别?

带有添加和删除参考的 Rails 迁移

如何在遍历数组时使用 Array#delete?