2011-08-24 4 views
0

Nokogiri를 사용하여 HTML 페이지의 내용이 변경되었는지 여부를 나타내는 지표로 사용할 수있는 HTML 페이지의 태그 구조 개요를 만들려고합니다.Nokogiri를 사용하여 페이지에서 HTML 태그 구조의 개요를 어떻게 만듭니 까?

기본적으로 모든 텍스트를 제거하고 HTML 태그 만 남겨두기를 원합니다 (속성 없음).

아이디어는 페이지를 변경했는지 확인하기 위해 이것을 사용하는 몇 가지 방법 중 하나 인 스케치로 사용하는 것입니다. 나는 끝났어요 때

, 나는 "스케치"이 페이지의 구조가 변경되었는지 개정에 대해 비교 될 수 있도록 약

<html><head></head><body><div></div><p><div></div></p></body></html> 

처럼 보이게합니다.

Nokogiri에서 DOM을 구문 분석하는 방법에 대한 많은 예제가 있습니다. 그러나, 그것을 리스팅하는 것은 어떨까요?

의견이 있으십니까? 이 같은

+1

는 DOM은 아주 기본적인 트리 구조입니다 : 노드가 데이터를 포함를 (속성들, 텍스트들)을 가지며 자식 노드들을 가진다. 그 구조를 어떻게 직렬화 (나열) 할 수 있을지 생각해 보셨습니까? 어떻게 할 수 있는지 생각해보고 시도한 내용으로 질문을 업데이트하십시오. – maerics

답변

1

뭔가 할 것 :

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>" 
관련 문제