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

发布于 2024-07-22 11:15:27 字数 116 浏览 3 评论 0原文

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

I have a doubt about nokogiri, I need to get the HTML elements from a page, and get the xpath for each one. The problem is that I can't realize how to do it with nokogiri. The HTML code is random, because I've to parse several pages, from different websites.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

看春风乍起 2024-07-29 11:15:27

如果您询问如何搜索节点,则可以使用 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"

If you are asking how to search for a node, you may use either CSS or XPath expressions, like so:

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

If you are asking how, once you've found a node, you can retrieve the canonical XPath expression for it, you may use Node#path like so:

puts node_found_by_css.path # => "/html/body/div[3]/div[1]/div[1]/h1"
远山浅 2024-07-29 11:15:27

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

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

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

If you are asking how to get the XPath for each HTML element in a page, then the following should help. This will open and parse a page and then print out the XPath for each element.

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

doc = Nokogiri::HTML(open("http://slashdot.com/"))
doc.traverse {|node| puts node.path }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文