Страница сканирования, требующая входа с помощью Anemone

Я использую камень Анемон следующим образом:

  • Посетите первый URL (начальное число), сохраните содержимое страницы в базе данных и сохраните все ссылки с этой страницы в базу данных (все ссылки, которых еще нет в базе данных)
  • Загрузить следующую ссылку из базы данных, сохранить ее содержимое и любые другие ссылки снова
  • Если другой ссылки нет, просканируйте все ссылки еще раз (через некоторое время), чтобы перезаписать старый контент новым.

Это работает довольно хорошо, но есть ли возможность, как сканировать страницы, требующие входа в систему (если я знаю имя пользователя и пароль)? Я знаю Mechanize gem, который предоставляет функциональность для заполнения форм, но я не знаю, как интегрировать его в свой процесс (если это возможно). Или есть какой-то другой способ, как сканировать страницы "за" формой входа?

2 ответа

Вы можете использовать механизировать, чтобы автоматизировать процесс входа в систему, а затем продолжить сеанс, чтобы делать то, что вы хотите.

Вот мой пример кода:

require 'mechanize'

module YourModuleName
  class YourClassName
      attr_reader :agent

      def call
        @agent = Mechanize.new
        page = @agent.get(@login_page)
        form = page.forms.first
        form.field_with(id: LoginConstant::CSS[:user_email]).value = 
        LoginConstant::USER_NAME
        form.field_with(id: LoginConstant::CSS[:user_password]).value = LoginConstant::PASSWORD
        form.submit
        self
      end
  end
end

Затем в вашем коде, чтобы сканировать страницу, которая запрашивает логин же ниже:

response = YourModuleName::YourClassName.new('<your_login_page>').call
response.agent.get('<your_page_to_want_cralwer>')

В вашем случае я предлагаю использовать одно из следующих решений:

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

Другие вопросы по тегам