【问题标题】:nokogiri doc.xpath() problemnokogiri doc.xpath() 问题
【发布时间】:2009-11-28 01:13:08
【问题描述】:

当循环浏览许多网页并调用如下简单的东西时

manyhtmlpages.each do |page|

doc = Nokogiri::HTML(page) 

puts doc.xpath("/html/body/h2[1]","/html/body/a[1]").to_s

end

我观察到内存消耗不断增加,直到脚本因内存不足而终止。

当我删除 doc.xpath 位时,不会出现上述错误。

【问题讨论】:

  • 多少页?如果您只检查几个,会发生这种情况吗?消耗与页面数量成线性关系吗?
  • 它发生在大约几千个 html 唯一页面上。等等。
  • 更改您的用户名并不会减少您一遍又一遍地发布相同问题的烦恼。
  • 很抱歉之前没有人知道答案,当我关闭浏览器时,我的帐户一直被删除。

标签: ruby nokogiri


【解决方案1】:

我认为问题的根源在于代码在页面和文档离开范围之前不会被垃圾收集(如果我错了,请纠正我)。

描述了一个类似的问题here
这是 libxml-ruby 的问题,但据我所知,nokogiri 实际上是在 libxml 上构建的。

对不起,我不知道这个问题的具体细节。这只是为您指明正确的方向。

【讨论】:

  • 谢谢,我认为这是正确的方向......我将尝试使用 gc.start 强制垃圾收集
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多