2009-06-01 5 views
1

У меня есть сомнения относительно nokogiri, мне нужно получить HTML-элементы со страницы и получить xpath для каждого из них. Проблема в том, что я не могу понять, как это сделать с нокогири. HTML-код случайный, потому что я должен разбирать несколько страниц с разных сайтов.Могу ли я получить html-элементы с nokogiri?

ответ

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 

Если вы спрашиваете, как после того, как вы нашли узел, вы можете получить каноническое выражение XPath для этого, вы можете использовать Node#path так:

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

Если вы хотите только первый элемент, просто используйте 'doc.at_css (" h1) '. – akuhn

0

Если вы спрашиваете, как получить XPath для каждого HTML-элемента на странице, то следующий должен помочь. Это откроет и проанализирует страницу, а затем распечатает XPath для каждого элемента.

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^