2009-06-01 5 views
1

나는 노코 기리에 대해 의구심이 있으며, 페이지에서 HTML 요소를 가져와 각각에 대해 xpath를 얻어야합니다. 문제는 노코 기리 (nokogiri)로 어떻게하는지 깨닫지 못한다는 것입니다. 다른 웹 사이트에서 여러 페이지를 구문 분석해야하기 때문에 HTML 코드는 임의적입니다.nokogiri로 html 요소를 얻을 수 있습니까?

답변

5

당신이 노드를 검색하는 방법을 요구하는 경우에, 당신은과 같이, CSS 또는 XPath는 하나 표현을 사용할 수 있습니다 :

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open("http://slashdot.com/")) 

node_found_by_css = doc.css("h1").first 
node_found_by_xpath = doc.xpath("/html/body//h1").first 

당신이 요청하는 경우 어떻게 노드를 찾았 으면, 당신이 할 수있는 당신과 같이 Node#path을 사용할 수 있습니다, 그것을 위해 정식 XPath 식을 검색 :

puts node_found_by_css.path # => "/html/body/div[3]/div[1]/div[1]/h1" 
+0

첫 번째 요소 만 원할 경우'doc.at_css ("h1)'을 사용하십시오. – akuhn

0

한 페이지에서 각 HTML 요소에 대한 XPath를 얻는 방법을 요구하는 경우, 다음은 도움이 될 것입니다. 그러면 페이지가 열리고 구문 분석 된 다음 각 요소에 대한 XPath가 인쇄됩니다.

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open("http://slashdot.com/")) 
doc.traverse {|node| puts node.path } 
관련 문제