次の HTML コードがあるとします。
...
<p>bla bla</p>
<h3>Foobar</h3>
<p>bla bla</p>
<p>bla bla</p>
<h3>Example</h3>
...
h3
テキストを含む最初の要素を取得する方法はありますFoobar
か?
Since this is HTML, I would recommend CSS selectors:
puts doc.at_css('h3:contains("Foobar")')
#=> <h3>Foobar</h3>
CSS selectors tend to make for more readable expressions when parsing HTML. I tend to use XPath only for XML or when I need the full power of XPath expressions.
contains()
XPath 関数を使用できます。
doc.xpath("//h3[contains(text(), 'Foobar')]")
または、ターゲット テキストが の子孫テキスト ノードにある可能性がある場合はh3
、次を使用します。
doc.xpath("//h3[contains(.//text(), 'Foobar')]")