我的HTML结构如下:
<div class='content'>
<h2>Title</h2>
<p>Some content for Title</p>
<h2>Another Title</h2>
<p>Content for Another Title</p>
<p>Some more content for Another title</p>
<h2>Third</h2>
<p>Third Content</p>
</div>
我正在尝试编写输出代码:
Title
- Some content for Title
Another Title
- Content for Another Title
- Some more content for Another title
Third
- Third Content
我在五分钟前从未使用过Nokogiri,到目前为止我所能想到的只有:
content = doc.at_css('.content')
content.css('h2').each do |node|
puts node.text
end
content.css('p').each do |node|
puts " - "
puts node.text
end
这显然不会将各个部分组合在一起。如何与Nokogiri实现我所需的分组?
答案 0 :(得分:1)
你几乎拥有它。 以下是我将如何修复它。
content.css('h2').each do |node|
puts node.text
while node = node.at('+ p')
puts " - #{node.text}"
end
end
+ p
表示下一个(相邻)p
答案 1 :(得分:0)
有很多方法可以做到,这里有一个:
doc.at_css('.content').element_children.each do |node|
puts(node.name == "h2" ? node.text : " - #{node.text}")
end