ruby - Nokogiri 在 heroku 上产生不同的结果?

标签 ruby heroku nokogiri

我遇到了一个非常奇怪的问题,非常感谢帮助追踪它。

我正在使用 nokogiri gem 来解析一些 html,并且正在解析一个包含奇怪字符的文件。不完全确定这个字符是什么,在 vim 中它显示为 ^Q。

在我自己的电脑上,一切正常,但是在 heroku 上它插入了一个 </body></html><html>当它命中字符时,选择器只返回奇怪字符之前的元素。

举例说明: Nokogiri::HTML( open("http://thoms.net.nz/e2.html")).css("body div").count在 heroku 上是 1,在我的电脑上是两个。 - 包含此字符的文件可以从http://thoms.net.nz/e2.html 下载.

我的电脑和 heroku 都运行 nokogiri 1.5.5 和 ruby​​ 1.9.3。

最佳答案

^Q 是一个软件控制字符 (XON),它不应该出现在 HTML 中。我怀疑它的意外存在让 Nokogiri 和 Heroku 感到困惑,但方式不同。

来自互联网荒野的 HTML 文档可以通过多种方式被破坏。我在其中看到了各种各样的垃圾,如果我无法使用 iconv 或 Unicode 音译来理解它,我会求助于快速全局搜索并替换以删除任何不在正常 ASCII 范围内的内容,然后再进一步加工。


在 Ruby 中,全局搜索和替换使用 String#gsub

doc = Nokogiri::HTML(html.gsub("\u0011", ''))

关于ruby - Nokogiri 在 heroku 上产生不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12085250/

相关文章:

html - 使用 Nokogiri 抓取整个 HTML 标签

html - nokogiri 多个 css 类

ruby-on-rails - 使用 Nokogiri 从与 Savon 的 SOAP 调用中读取响应

ruby-on-rails - 您如何管理共享代码和配置的多个 Rails 应用程序和服务?

ruby-on-rails - 从提供给 instance_exec 的 block 中提前返回

ruby - 在 heroku 上启动应用程序时出错

mysql - 在 Heroku 上使用 Ruby 和 XEROUND

ruby-on-rails - 推送到 Heroku - ActiveRecord::StatementInvalid: PG::UndefinedTable: 错误:关系 "users"不存在

ruby - 如何覆盖 Ruby 中的要求?

Heroku部署错误: 'sh: Syntax error: EOF in backquote substitution' and undefined local variable or method `install_language_pack_gems'