如何使用 Hpricot 搜索所有元素的inner_text



我想使用 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,它将访问您的起始节点下的所有节点。

相关内容

  • 没有找到相关文章

最新更新