2013-07-12 38 views
6

Tôi có một trình duyệt web nokigiri xuất bản tới cơ sở dữ liệu mà tôi đang cố gắng xuất bản lên heroku. Tôi có một lối vào ứng dụng sinatra mà tôi muốn lấy từ cơ sở dữ liệu. Tôi mới với Heroku và phát triển web, và không biết cách tốt nhất để xử lý một cái gì đó như thế này.Heroku và Web cạo

Tôi có phải đặt kịch bản web scraper tải lên cơ sở dữ liệu theo tuyến đường sinatra (như mywebsite.com/scraper) và chỉ làm cho nó tối nghĩa đến mức không ai ghé thăm nó? Cuối cùng, tôi muốn có phần sinatra là một api nghỉ ngơi lấy từ cơ sở dữ liệu.

Cảm ơn mọi đầu vào

+1

Nó phụ thuộc ho w thường bạn muốn nó cháy - on lệnh, tại một thời gian nhất định ...? – iain

+1

Câu hỏi của bạn cần thêm một chút thông tin để được trả lời. Bạn có muốn cạo từ bên trong heroku không? Chức năng của/scraper là gì để khởi động kịch bản cạo hoặc để truy xuất nội dung cóp nhặt? Bạn có quan tâm nhiều hơn về cách bảo vệ điểm cuối http hơn cách lưu trữ ứng dụng trên heroku không? –

Trả lời

3

Có hai cách tiếp cận bạn có thể thực hiện.

Cách đầu tiên là sử dụng các dynos một lần bằng cách chạy trình quét thông qua bảng điều khiển bằng cách sử dụng heroku run YOURCMD. Chỉ cần đảm bảo scraper không ghi vào đĩa mà sử dụng cơ sở dữ liệu.

Thông tin thêm: https://devcenter.heroku.com/articles/one-off-dynos

Thứ hai là phân biệt giữa scraper và xử lý web trong một cách mà bạn có trình web cho tương tác giao diện người dùng bình thường và một quá trình scraper mà quá trình web có thể đẻ trứng/nói chuyện với. Nếu bạn đi theo con đường này, bạn sẽ biết cách bảo vệ nó khỏi phần còn lại của thế giới (auth/url obfuscation vv).

Thông tin thêm: https://devcenter.heroku.com/articles/background-jobs-queueing

0

tôi đã làm nó bằng cách tạo ra một nhiệm vụ cào và sử dụng dynos một lần như đã đề cập bởi XLII

Đây là tập tin nhiệm vụ cào của tôi

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 

Bạn có thể chỉ cần chạy nó bằng cách gọi

heroku run rake scrape[google]