簡體   English   中英

如何使用Nokogiri在頁面上創建HTML標簽結構的輪廓?

[英]How do I create an outline of the HTML tag structure on the page using Nokogiri?

我正在嘗試使用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

編輯一個例子

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>"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM