搜索具有特定内容的元素

  • 本文关键字:元素 搜索 ruby nokogiri
  • 更新时间 :
  • 英文 :


假设我有以下HTML代码:

...
<p>bla bla</p>
<h3>Foobar</h3>
<p>bla bla</p>
<p>bla bla</p>
<h3>Example</h3>
...

有没有办法获取包含文本Foobar的第一个h3元素?

由于这是HTML,我推荐CSS选择器:

puts doc.at_css('h3:contains("Foobar")')
#=> <h3>Foobar</h3>

CSS 选择器倾向于在解析 HTML 时使表达式更具可读性。我倾向于只将 XPath 用于 XML,或者当我需要 XPath 表达式的全部功能时。

您可以使用 contains() XPath 函数:

doc.xpath("//h3[contains(text(), 'Foobar')]")

或者,如果目标文本可能位于 h3 的后代文本节点中,请使用:

doc.xpath("//h3[contains(.//text(), 'Foobar')]")

要直接获取第一个匹配元素而不是数组,请使用 at_xpath 而不是 xpath

相关内容

  • 没有找到相关文章

最新更新