我是Ruby on Rails的新手,想要创建一个抓取数据并将其插入数据库的抓取工具。我目前正在使用Heroku,所以我无法直接访问数据库,并想知道将爬虫脚本集成到RoR框架的最佳方法是什么。我会使用每小时或每天的cron来运行脚本。
答案 0 :(得分:2)
如果您在Heroku上使用Rails,您可以使用DataMpper或ActiveRecord等ORM适配器。然后,这使您可以访问您的数据库,但通过基本层。如果您需要将原始sql发送到数据库,您通常不建议这样做,因为ORM提供了您需要的所有内容。
您基本上只需在正常的rails应用程序中创建模型,并在表格中创建相关字段。
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])
通常你可以使用Whenever(https://github.com/javan/whenever)管理你的cronjobs,但是在Heroku上我不知道它是如何工作的,因为我之前没有在Heroku上设置任何东西。
答案 1 :(得分:0)
我建议2个选项中的一个:
使用一个使用require rubygems
的ruby脚本以及您想要完成任务的其他帮助程序库(如Rails,ActiveRecord等),然后使用cron该脚本。
如果您使用Rails也提供Web应用程序,请使用计算机的hosts文件,以便该计算机上的wget
(或类似)正确地将请求映射到该rails实例;从那里,只需将其设置为Web应用程序,并在您的CRON中使用wget
命令。效率不是很高,但如果您只是根据现有的设置寻找快速和脏的东西,那就可以很好地工作。只需确保将STDOUT
和STDERR
发送到/dev/null
,这样您就不会最终收集CRON文件了。