Как получить следующий элемент HTML в Nokogiri? - PullRequest
11 голосов
/ 22 марта 2011

Допустим, мой 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, чтобы News имел отношение к Some interesting news here и т. Д.

1 Ответ

30 голосов
/ 22 марта 2011

Вы хотите Узел # следующий_элемент :

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

Существует также item.next, но он также будет возвращать текстовые узлы, где item.next_element будет возвращать только узлы элемента (например, p).

...