gpt4 book ai didi

ruby - 如何从网页中提取 HTML 主题标题?

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:19 25 4
gpt4 key购买 nike

给定一个类似“What popular startup advice is plain wrong?”的页面,我希望能够提取右上角主题标题下的第一个主题,在本例中为“常见误解”。

我在 Ruby 中执行此操作的最佳方法是什么?是 Nokogiri 还是正则表达式?大概我需要做一些 HTML 解析?

最佳答案

首先,您几乎从来没有想要使用正则表达式来解析/提取/折叠/旋转/破坏 XML 或 HTML。它可能出错的方式太多了。正则表达式非常适合某些工作,但 XML/HTML 提取并不适合。

也就是说,这是我使用 Nokogiri 会做的事情:

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open('http://www.quora.com/What-popular-startup-advice-is-plain-wrong'))

topic = doc.at('span a.topic_name span').content
puts topic

运行输出:

Common Misconceptions

该代码采用了一些快捷方式,应该可以始终如一地工作:

  1. 使用 Ruby 的 OpenURI 可以轻松访问 Internet 资源。对于最简单到普通的应用程序,这是我的首选。有更强大的工具,但没有一个更方便。
  2. doc.at 告诉 Nokogiri 遍历文档,并找到 CSS 访问器“span a.topic_name span”的第一次出现,这应该是一致的页面作为第一个条目。

请注意,Nokogiri 支持搜索节点的一些变体:atsearchat% 以及类似 css_at 的东西找到第一次出现并返回一个 Node,这是一个单独的标签或文本或评论。 search/ 和这些变体返回一个类似于节点数组的 NodeSet。您必须遍历该列表或使用某种数组访问器提取所需的单个节点。在上面的代码中,我可以说 doc.search(...).first 来获取我想要的节点。

Nokogiri 还支持使用 XPath 访问器,但对于大多数情况,我通常会使用 CSS。它更简单、更易于阅读,但您的情况可能会有所不同。

关于ruby - 如何从网页中提取 HTML 主题标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8622314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com