引入nokogiri:如何选择通过匹配文本节点?(Nokogiri: How to select n

2019-07-19 12:11发布

如果我有一帮喜欢的元素:

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

是否有一个内置的引入nokogiri方法会得到我,包含文本“苹果”所有,例如,p元素? (该示例元件上方将匹配,例如)。

Answer 1:

引入nokogiri可以使用jQuery CSS扩展做到这一点(现在的):

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"


Answer 2:

这里是工作的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>

希望帮助



Answer 3:

您还可以做到这一点很容易Nikkou :

doc.search('p').text_includes('bar')


Answer 4:

尝试使用这个XPath:

p = doc.xpath('//p[//*[contains(text(), "Apple")]]')


文章来源: Nokogiri: How to select nodes by matching text?
标签: ruby nokogiri