我可以用nokogiri获取html元素吗?

时间:2009-06-01 19:04:51

标签: xpath nokogiri elements

我对nokogiri有疑问,我需要从页面获取HTML元素,并为每个元素获取xpath。问题是我无法意识到如何用nokogiri做到这一点。 HTML代码是随机的,因为我要从不同的网站解析几个页面。

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

如果您询问如何获取页面中每个HTML元素的XPath,那么以下内容应该有所帮助。这将打开并解析一个页面,然后打印出每个元素的XPath。

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

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