插入 Rails 数据库
我是 Ruby on Rails 的新手,想要创建一个抓取数据并将其插入数据库的爬虫。我目前正在使用 Heroku,因此无法直接访问数据库,并且想知道将爬虫脚本集成到 RoR 框架中的最佳方法是什么。我将使用每小时或每天的 cron 来运行脚本。
I'm new to Ruby on Rails and wanted to create a crawler that scrapes data and inserts it into the database. I'm currently using Heroku so I can't access the database directly and was wondering what the best way to integrate a crawler script into the RoR framework would be. I would be using an hourly or daily cron to run the script.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您在 Heroku 上使用 Rails,则可以只使用 ORM 适配器,例如 Datamapper 或 ActiveRecord。然后,您就可以访问数据库,但基本上是通过一个层。如果您需要将原始 sql 发送到数据库,您可以这样做,但通常不建议这样做,因为 ORM 提供了您所需的几乎所有内容。
您基本上只需在 Rails 应用程序中创建模型,就像正常的模型和表中的关联字段一样。
然后在你的爬虫脚本中,你可以通过使用你的模型来创建记录...
通常你可以使用Whenever(https://github.com/javan/whenever)来管理你的cronjobs,但在Heroku上我不确定它是如何工作的因为我之前没有在 Heroku 上进行任何设置。
If you are using Rails on Heroku you can just use an ORM adapter like Datamapper or ActiveRecord. This then gives you access to your database but through a layer basically. If you need to send raw sql to the database you can but it's usually not recommended since the ORM's provide pretty much everything you need.
You would basically just create models within your rails application like normal and the associated fields in a table.
Then in your crawler script you can create records by just using your model...
Normally you can use Whenever(https://github.com/javan/whenever) to manage your cronjobs but on Heroku I'm not sure how it works since I haven't set any up on Heroku before.
我建议 2 个选项中的 1 个:
使用一个 ruby 脚本,该脚本使用
require rubygems
以及您想要完成任务的其他帮助程序库(如 Rails、ActiveRecord 等),然后使用 cron如果您还使用 Rails 来提供 Web 应用程序服务,请使用计算机的主机文件,以便该计算机上的
wget
(或类似文件)能够正确地将请求映射到该 Rails 实例;从那里,只需将其设置为 Web 应用程序,然后在 CRON 中使用 wget 命令即可。效率不是很高,但如果您只是在现有设置的基础上寻找快速而肮脏的东西,那会很好用。只需确保将STDOUT
和STDERR
发送到/dev/null
,这样您就不会最终积累 CRON 文件。I'd suggest 1 of 2 options:
Use a ruby script that uses
require rubygems
along with other helper libraries (like Rails, ActiveRecord, whatever) you want to accomplish the task, and then cron that script.If you're using Rails to also serve web apps, use the machine's hosts file so that a
wget
(or similar) on that machine will properly map requests to that instance of rails; from there, just set it up as a web app, and use thewget
command in your CRON. Not terribly efficient, but if you're just looking for something quick and dirty based on an existing setup, that would work nicely. Just make sure to sendSTDOUT
andSTDERR
to/dev/null
so you don't end up amassing CRON files.