Heroku和Web抓取

问题描述 投票:7回答:3

我有一个nokigiri网络抓取工具,该抓取工具发布到了我要发布到heroku的数据库中。我有一个想要从数据库中提取的sinatra应用程序前端。我不熟悉Heroku和Web开发,也不知道处理此类问题的最佳方法。

我是否必须将上传到数据库的网络抓取脚本放置在sinatra路由下(例如mywebsite.com/scraper),并且使其变得如此晦涩,以至于没有人访问它?最后,我想让sinatra部分成为从数据库中提取的rest api。

感谢所有输入

ruby web-services api heroku sinatra
3个回答
3
投票

您可以采用两种方法。

第一个是使用heroku run YOURCMD通过控制台运行刮板来使用一次性测功机。只要确保刮板不要写入磁盘而是使用数据库即可。

更多信息:https://devcenter.heroku.com/articles/one-off-dynos

第二个区别是,您具有用于常规UI交互的Web流程和该Web进程可以生成/与之对话的scraper进程,从而区分了scraper和Web进程。如果您采用此路线,则取决于您如何保护它免受世界其他地区的影响(身份验证/网址混淆等)。

更多信息:https://devcenter.heroku.com/articles/background-jobs-queueing


0
投票

我通过创建rake任务并使用XLII提到的一次性测功机来做到这一点

这是我的耙任务文件

require 'bundler/setup'
Bundler.require

desc "Scrape Site"
 task :scrape, [:companyname]  => :environment do |t, args|
    puts "Company Name is :" + args[:companyname]

    agent = Mechanize.new
    agent.user_agent_alias = 'Mac Safari'
    puts "Agent (Mac Safari Created)"
        # MORE SCRAPING CODE

 end

您可以通过调用简单地运行它

heroku run rake scrape[google]

0
投票

[使用python观看有关在Heroku上进行网络废弃和硒网络自动化的视频,https://youtu.be/GMXqSsbQhos

© www.soinside.com 2019 - 2024. All rights reserved.