【问题标题】:Parse HTML using ruby core libraries? (ie, no gems required)使用 ruby​​ 核心库解析 HTML? (即,不需要宝石)
【发布时间】:2012-02-25 15:19:32
【问题描述】:

我和一些朋友一直在编写一组脚本,以便更轻松地在 uni 的机器上工作。其中一个工具目前使用 Nokogiri,但是为了让这些工具在所有机器上运行时尽可能少的设置,我们一直在尝试找到一个“本机”html 解析器,而不是要求用户安装 RVM 和自定义 gem (由于大多数用户的磁盘空间限制)。

我们是否仅限于 Nokogiri/Hpricot/?我们是否应该只考虑编写符合我们需求的自定义解析器?

干杯。

编辑:如果这里有我在搜索中遗漏的帖子,请告诉我!所以。有时太大而无法有效地找到东西......

【问题讨论】:

  • 鉴于 gem 都是开源的,您可以随时从 gem 中提取您需要的内容并在自定义解析器中使用它,然后您只需提供自己的代码...
  • 我确实建议不要自己写。
  • 使用现有的解决方案会更可靠。 @MarcTalbot 上面所说的很关键:如果 gem 是开源的,您可以将源代码复制到您的应用程序中(假设您不需要非 GPL 库)。
  • 是的,我们唯一的问题是整套工具目前大约 5MB,因此添加所有用于 nokogiri 的库(例如)会使包增加到大约 7MB。我们希望可能有一些小东西!不过不用担心,我会看看使用打包的现有东西。

标签: html ruby parsing gem core


【解决方案1】:

ruby 标准库中没有 html 解析器
html 解析器必须比 xml 解析器更能容忍错误的标记

你可以运行 html 虽然很整洁 (http://tidy.sourceforge.net)
整理 html 并生成有效的标记
现在可以通过 stdlib 中的 rexml 读取 :-)

rexml 比 nokogiri 慢得多,上次检查是在 2009 年
Sam Ruby 一直致力于让 rexml 更快

更好的方法是进行更好的部署
看看http://gembundler.com/bundle_package.html 并使用 capistrano(或类似的)来配置服务器

【讨论】:

  • 谢谢,部署的问题是工具在大学管理的机器上运行,所以如果我们必须安装任何东西,它必须在用户主目录中发生,这限制在一定数量空间:很少有人有足够的空间来安装带有自定义 gem 的 RVM 之类的东西。这也是纯 ruby​​,而不是 Rails。
  • 另一种选择可能是创建和使用 API。优点是代码仅部署在一台机器上 - 因此节省空间。但对 api 调用的速度进行基准测试
  • 这些不是那种工具——它是命令行实用程序,可以将lpr 包装成一个易于使用的工具。不过还是谢谢。
猜你喜欢
  • 2013-01-18
  • 2017-04-18
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2013-12-29
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多