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