Заполнение приложения Rails удаленным контентом с другого сайта - PullRequest
0 голосов
/ 28 декабря 2018

Мне нужно заполнить или очистить данные с другого сайта, чтобы иметь контент для моего проекта.

Как вы собираете данные с другого сайта, используя свое собственное приложение rails?Используете ли вы отдельное приложение / сервер для запуска какого-либо задания cron, а затем добавляете эти данные в ваше приложение rails?Или возможно, чтобы ваш собственный сайт очищал данные и отображал их напрямую?

Моей первой идеей было очистить сайт с помощью Mechanize, а затем добавить данные в Fixtures в моем приложении rails в качестве начальных данных.Есть ли способ лучше?Может быть, даже способ непрерывной очистки другого сайта для отображения данных с помощью моего собственного приложения rails?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Я использую Нокогири для чистки веб-сайтов.

Вам не нужно отдельное приложение.У вас могут быть методы внутри ваших моделей, которые занимаются всей очисткой и заполнением вашей базы данных, а затем вы можете создать файл rake, который будет выполнять эти функции.

Я называю мой scheduler.rake

Thisзаходит в / lib / tasks /

И затем, если вы используете Heroku, вы сможете добавить плагин планировщика (он доступен бесплатно 28.12.2008)

В Heroku есть некоторыекрасивые хорошие документы объясняющие, как вы можете настроить вещи на стороне вещей Heroku.

0 голосов
/ 28 декабря 2018

Вы можете использовать планировщик rufus и watir-dom-wait для решения вашей проблемы.Я также выполнил аналогичную задачу для очистки списка книг Amazon KDP с помощью гема watir-dom-wait. Вы также можете получить данные для запроса вызова ajax, механизация и Nokogiri не будут работать для Ajax

require 'rufus-scheduler'
require 'watir-dom-wait'
require 'selenium-webdriver'
scheduler = Rufus::Scheduler.new

scheduler.in '1d' do
  download_report
end
#download the report form amazon kdp
def download_report
  #login
  @browser = Watir::Browser.new :chrome, options: {prefs: prefs}
  @browser.goto 'https://kdp.amazon.com/en_US/reports-new'
  @browser.input(:name => "email").send_keys("test@gmail.com")
  @browser.input(:name => "password").send_keys("password")
  @browser.input(:id => 'signInSubmit').click
  @browser.span(:text => "Generate Report").click
end
0 голосов
/ 28 декабря 2018

Я использую heroku, и он поставляется с так называемым планировщиком, который хорошо работает для моего маленького проекта.Я считаю, что это работает очень похоже на cron.

Heroku Scheduler

Как только данные будут удалены.Он идет прямо в базу данных (psql), тогда вы можете отобразить все, что вы хотели, с помощью запроса к базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...