我遇到了一个非常奇怪的问题,非常感谢帮助追踪它。
我正在使用 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/