Развернул бота на pythonanywhere, но он не запускается

Написал скрипт для инстаграм бота, загрузил его на pythonanywhere, при запуске выдает ошибку

ValueError: Could not get version for Chrome with this command: google-chrome --version || google-chrome-stable --version

Выдает эту ошибку из-за строки:

browser = webdriver.Chrome(ChromeDriverManager().install())

Для установки использую следующую библиотеку:

from webdriver_manager.chrome import ChromeDriverManager

Подскажите, пожалуйста, что можно исправить, чтобы заработало


Ответы (1 шт):

Автор решения: 0dminnimda

Чтобы Selenium смог заработать, ему нужен браузер. Если мы хотим использовать Chrome, тогда нам нужно его скачать.

Но, на PythonAnywhere уже установлен chromedriver, если просто хотите запустить с помощью установленной версии, используйте этот туториал

И тут появляется webdriver-manager ... Читая исходный код, я не уверен, баг ли это, вводящее ли в заблуждение описание или просто пакет ещё не доделан ..., т.к. чтобы заработала версия 3.4.3?, надо чтобы на устройстве уже был установлен Chrome. (пакет, его видимо не находит)

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

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

from selenium import webdriver

import requests

from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType, chrome_version, validate_response
from webdriver_manager.driver import ChromeDriver


def new_init(self, name, version, os_type, url, latest_release_url,
             chrome_type=ChromeType.GOOGLE):
    super(ChromeDriver, self).__init__(name, version, os_type, url,
                                       latest_release_url)
    self.chrome_type = chrome_type


@property
def new_browser_version(self):
    try:
        return chrome_version(self.chrome_type)
    except Exception:
        return None


def get_latest_release_version(self):
    resp = requests.get(self._latest_release_url)
    validate_response(resp)
    return resp.text.rstrip()


ChromeDriver.__init__ = new_init
ChromeDriver.browser_version = new_browser_version
ChromeDriver.get_latest_release_version = get_latest_release_version

driver = webdriver.Chrome(ChromeDriverManager().install())

Второй вариант - скачать более раннюю версию - около 1.5

Ещё к слову, чтобы запустить selenium на pythonanyehere и не использовать рекомендованные --headless, посмотрите на этот ответ


Но, в итоге, у меня не получилось запустить никакими другими методами, кроме рекомендуемого, т.е.

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
browser = webdriver.Chrome(options=chrome_options)
try:
    browser.get("https://www.google.com")
    print("Page title was '{}'".format(browser.title))
finally:
    browser.quit()
→ Ссылка