我想使用 Hpricot 扫描所有元素的inner_text
,并知道当前正在扫描的元素。但是,我采取的每种方法都会导致递归。是否有内置函数可以使用Hpricot(或Nokogiri)执行此操作?下面的代码只是向下扫描一个级别:
@t = []
doc = Hpricot(open("some html doc"))
(doc/"html").each do |e|
e.children.each do |child|
if child.is_a?(Hpricot::Text)
@t << child.to_s.strip
end
end
end
虽然我不确定为什么要收集所有文本节点(也许有一个更有效的解决方案),但这应该可以让您入门:
require 'nokogiri'
doc = Nokogiri::HTML(open('doc'))
doc.at_css("body").traverse do |node|
puts "***#{node.name}"
puts node.text
end
它使用 Nokogiri 的traverse
,它将访问您的起始节点下的所有节点。