50

私が次のような要素をたくさん持っている場合:

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

p「Apple」というテキストを含むすべての要素を取得する組み込みのメソッドがNokogiriにありますか?(たとえば、上記の要素の例は一致します)。

4

4 に答える 4

63

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"
于 2013-03-10T16:01:21.110 に答える
52

動作するXPathは次のとおりです。

require 'nokogiri'

doc = Nokogiri::HTML(DATA)
p doc.xpath('//li[contains(text(), "Apple")]')

__END__
<p>A paragraph <ul><li>Item 1</li><li>Apple</li><li>Orange</li></ul></p>
于 2009-09-25T03:32:53.943 に答える
6

このXPathを使用してみてください:

p = doc.xpath('//p[//*[contains(text(), "Apple")]]')
于 2009-09-25T00:14:51.430 に答える
6

日光でこれを非常に簡単に行うこともできます:

doc.search('p').text_includes('bar')
于 2013-06-02T16:57:22.077 に答える