【问题标题】:How do I get the next HTML element in Nokogiri?如何在 Nokogiri 中获取下一个 HTML 元素?
【发布时间】:2011-03-27 15:26:02
【问题描述】:

假设我的 HTML 文档是这样的:

<div class="headline">News</div>
<p>Some interesting news here</p>
<div class="headline">Sports</div>
<p>Baseball is fun!</p>

我可以使用以下代码获取headline div:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "mypage.html"
doc = Nokogiri::HTML(open(url))

doc.css(".headline").each do |item|  
  puts item.text
end 

但是如何访问以下p标签中的内容,使NewsSome interesting news here等相关?

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    你想要Node#next_element:

    doc.css(".headline").each do |item|
      puts item.text
      puts item.next_element.text
    end
    

    还有item.next,但也会返回文本节点,其中item.next_element 将只返回元素节点(如p)。

    【讨论】:

    • 当我使用next_element 时,我得到了一个nil 对象EDIT 看起来"headline" divspan 中。我将更新 XML 示例
    • 成功了。我不得不做item.parent.next_element,因为标题 div 在 span 标签内。谢谢!
    • 您可能想要验证该 HTML。如果我记得正确的 div 不应该在 span 标签内。
    • "item.next... will also return text nodes" 对我非常有用,谢谢。这在文档中非常不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多