我是Ruby on Rails的新手,我想创建一个抓取数据并将其插入数据库的爬虫。我目前使用的是Heroku,所以我不能直接访问数据库,我想知道将爬虫脚本集成到RoR框架中的最好方法是什么。我将使用每小时或每天的cron来运行脚本。
发布于 2011-03-17 07:01:32
如果你在Heroku上使用Rails,你可以只使用像Datamapper或ActiveRecord这样的对象关系映射适配器。这样你就可以访问你的数据库了,但基本上是通过一个层。如果您需要将原始sql发送到数据库,您可以这样做,但通常不建议这样做,因为ORM提供了几乎所有您需要的东西。
基本上,您只需在rails应用程序中创建类似于normal的模型和表中的相关字段即可。
rails g model page meta_title:string page_title:string
rake db:migrate # This has to be run on heroku too "heroku rake db:migrate" after you have pushed your code up
然后在你的爬虫脚本中,你可以只使用你的模型来创建记录...
Page.create(:title => crawler[:title], :meta_title => crawler[:meta_title])
通常你可以使用any (https://github.com/javan/whenever)来管理你的cronjob,但是在Heroku上我不确定它是如何工作的,因为我以前没有在Heroku上设置过任何东西。
发布于 2011-03-17 06:20:03
我建议两个选项中的一个:
require rubygems
和其他想要完成任务的辅助程序库(如Rails、ActiveRecord等),然后执行该脚本。wget
(或类似文件)可以正确地将请求映射到该rails实例;然后,只需将其设置为web应用程序,然后在您的CRON中使用wget
命令。效率不是很高,但如果您只是想在现有设置的基础上寻找一些快速而粗糙的东西,那将会很好地工作。只需确保将STDOUT
和STDERR
发送到/dev/null
,这样您就不会堆积CRON文件。https://stackoverflow.com/questions/5332408
复制相似问题