0

次の HTML コードがあるとします。

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

h3テキストを含む最初の要素を取得する方法はありますFoobarか?

4

2 に答える 2

2

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.

于 2013-10-23T14:44:40.267 に答える
1

contains()XPath 関数を使用できます。

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

または、ターゲット テキストが の子孫テキスト ノードにある可能性がある場合はh3、次を使用します。

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

配列ではなく、最初に一致する要素を直接取得するには、ではat_xpathなくを使用しますxpath

于 2013-10-22T20:41:23.447 に答える