【发布时间】:2013-08-21 20:35:35
【问题描述】:
我要索引的网站相当大,有 1 万页。我真的只是想要一个包含所有 URL 的 json 文件,这样我就可以对它们运行一些操作(排序、分组等)。
基本的海葵循环运行良好:
require 'anemone'
Anemone.crawl("http://www.example.com/") do |anemone|
anemone.on_every_page do |page|
puts page.url
end
end
但是(因为站点大小?)终端在一段时间后冻结了。因此,我安装了MongoDB并使用了以下
require 'rubygems'
require 'anemone'
require 'mongo'
require 'json'
$stdout = File.new('sitemap.json','w')
Anemone.crawl("http://www.mybigexamplesite.com/") do |anemone|
anemone.storage = Anemone::Storage.MongoDB
anemone.on_every_page do |page|
puts page.url
end
end
它现在正在运行,但是当我早上回来时,如果 json 文件中有输出,我会非常感到惊讶 - 我以前从未使用过 MongoDB 和 anemone 文档的部分关于使用存储还不清楚(至少对我来说)。之前做过这件事的人可以给我一些提示吗?
【问题讨论】:
-
更新:我今天早上来了,我的输出文件中有大约 1500 个 url,远远少于我想要的 1.x 万个。命令行窗口也出现错误:
Serialization Failed: failed to allocate memory in bson_buffer.c -
更新 2:使用 JRuby 获得的 URL 数量大约是两倍,3300
-
更新 3:Spidr gem 做得更好,有 70,000 个 URL 并且还在增加