1

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

4

2 回答 2

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"
于 2009-06-03T02:42:24.483 回答
0

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

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

doc = Nokogiri::HTML(open("http://slashdot.com/"))
doc.traverse {|node| puts node.path }
于 2010-04-03T13:52:41.503 回答