我正在使用 hpricot 来阅读 HTML。我遇到了一个分段错误错误,我用谷歌搜索,有人说升级到最新版本的 Ruby。我正在使用 rails 2.3.2 和 ruby 1.8.7。如何解决此错误?
7 回答
我试图解析其中包含许多 unicode 字符的 html 页面,而 Hpricot 一直在崩溃。最后,我使用了来自 sanitize 的猴子补丁并将其放入我的 rails 应用程序的 environment.rb 中。自从我添加此补丁以来,没有发生过一次崩溃:
如果您可以自由选择您的 HTML 解析库,请切换它。为什么,Hpricot 的创建者最近发布说,现在你应该更好地使用Nokogiri而不是 HPricot。
你也可以看看 HTTParty。
在 ruby 1.8.5 上尝试使用 hpricot -v 0.6.161
这对我有用。
从记忆中,自从我大约一年前上次使用它以来:
Hpricot 将属性存储在一个固定大小的缓冲区中,并且一些框架在文档属性中生成非常长的散列。您可以在解析之前设置一些静态字段,以设置此缓冲区的大小。
我记得它在网页上的文档中相当突出,尽管它现在已经消失了。
好吧,根据您自己的问题,我会说“升级到最新版本的 Ruby”。但是,我也遇到了 hpricot segfaulting 的问题,这似乎与我对线程的使用有关。
这似乎是错误列表中的一个突出问题。我亲身经历过。我的理论与文件中的 HTML 结构或坏/损坏的字符有关,但我还没有找到确切的位置。
以下是问题的链接:
我有同样的段错误问题,但遗憾的是无法查阅 Dave 上面提到的问题,即使通过谷歌缓存 - 从我一直在谷歌搜索的 parse.rb 段错误与编码实体或 alt 字符集(重音字符也许)
sanitize lib 遇到了同样的问题并在这里发布了一个monkeypatch:http: //github.com/rgrove/sanitize/blob/1e1dc9681de99e32dc166f591343dfa60fc1f648/lib/sanitize/monkeypatch/hpricot.rb