2009-06-01 3 views
1

私はノコギリについて疑問を抱いています。ページからHTML要素を取得し、それぞれにxpathを取得する必要があります。問題は、ノコギリでどうやってやるのか分からないことです。私は別のウェブサイトからいくつかのページを解析しなければならないので、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 } 
関連する問題