我正在尝试使用Nokogiri创建HTML页面的标签结构大纲,我可以将其用作HTML页面内容是否已更改的指标。
要做到这一点,基本上我想去掉所有的文本,只留下HTML标记(没有属性)。这个想法是使用这个作为页面的草图,我使用的几个之一,看看页面是否有变化。
当我完成后,我希望"草图"看起来大致像
<html><head></head><body><div></div><p><div></div></p></body></html>
以便与修订版本进行比较,以查看页面结构是否发生了变化。
有很多关于如何在Nokogiri中解析dom的例子。但是,把它列出来怎么样?
大家有什么想法吗?
这样做:
class Nokogiri::XML::Node
def to_sketch
children.find_all(&:element?).map(&:to_sketch).join
end
end
class Nokogiri::XML::Element
def to_sketch
"<#{name}>#{super}</#{name}>"
end
end
EDIT示例
require 'nokogiri'
require 'open-uri'
Nokogiri::HTML(open('http://google.com')).to_sketch
的回报:
"<html><head><meta></meta><title></title><script></script><style></style><script></script></head><body><textarea></textarea><div><div><nobr><b></b><a></a><a></a><a></a><a></a><a></a><a></a><a><u></u></a></nobr></div><div><nobr><span></span><span></span><span><a></a></span><a></a><a></a></nobr></div><div></div><div></div></div><center><br></br><div><a><img></img></a><br></br><br></br></div><form><table><tr><td></td><td><input></input><input></input><input></input><div><input></input></div><br></br><span><span><input></input></span></span><span><span><input></input></span></span></td><td><a></a><a></a></td></tr></table></form><div><br></br><div><font><a></a><a></a><a></a></font><br></br><br></br></div></div><div></div><span><center><div><div><a></a><a></a><a></a><a></a></div></div><p><a></a></p></center></span><div></div><div><script></script></div><script></script><script></script></center></body></html>"