Подтвердить что ты не робот

Запуск браузера селена на сервере (Flask/Python/Heroku)

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

В настоящее время это работает на моем локальном компьютере (окна firefox открываются и закрываются при доступе к моей странице, и HTML обрабатывается далее в моем script). Однако мне нужен мой скребок для доступа в Интернете. Скребок встроен в приложение Flask на Heroku. Есть ли способ заставить браузер Selenium работать на серверах Heroku? Или есть хостинг-провайдеры, где он может работать?

4b9b3361

Ответ 1

Heroku, как ни удивительно, имеет серьезные ограничения в том, что нельзя использовать специализированное программное обеспечение или во многих случаях библиотеки. Предоставляя простой в использовании управляемый пакет с центральным управлением, Heroku удаляет свои серверы, чтобы предотвратить другое использование.

Что это сводится к тому, что Xorg не существует на динамограмме Heroku. Отсутствие Xorg и отсутствие возможности устанавливать пользовательское программное обеспечение означает отсутствие xvfb, а также отсутствие возможности запуска браузера, которого ожидает селен. Кроме того, браузер обычно недоступен.

Вам повезет с облачным предложением, например, с AWS, где вы можете установить собственное программное обеспечение, в том числе firefox, xvfb (чтобы не требовать все накладные расходы Xorg) и, конечно же, остальную часть вашего скребкового стека. Этот ответ объясняет, как это сделать правильно.

Ответ 2

Есть встроенные пакеты, чтобы заставить селен работать на герою.

Добавьте ниже buildpacks.

1) heroku buildpacks:add https://github.com/kevinsawicki/heroku-buildpack-xvfb-google-chrome/
2) heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver

И установите стек heroku на кедр-14, как показано ниже, так как xvfb buildpack работает только с кедром-14.

heroku stack:set cedar-14 -a stocksdata

Затем укажите местоположение Chrome в Chrome ниже

options = ChromeOptions()
options.binary_location = "/app/.apt/usr/bin/google-chrome-stable"
driver = webdriver.Chrome(chrome_options=options)