[英]Error running a Heroku Python + Selenium & Chromedriver
我正在嘗試使用 python 制作一個網絡爬蟲。 在我的win10系統上,這工作正常。 但是當我部署到 Heroku 時,出現以下錯誤。 我不知道為什么它不起作用。
代碼 :
from selenium import webdriver
import os
URL = "https://www.google.com" #URL
options = webdriver.ChromeOptions()
options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
options.add_argument("--no-sandbox")
options.add_argument("--disable-gpu")
options.add_argument("--headless")
driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), options=options)
driver.get(URL)
錯誤 :
2022-06-05T13:47:06.222744+00:00 app[worker.1]: /app/main.py:12: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
2022-06-05T13:47:06.222759+00:00 app[worker.1]: driver = webdriver.Chrome(executable_path=os.environ['CHROMEDRIVER_PATH'], options=options)
2022-06-05T13:47:06.815862+00:00 app[worker.1]: Traceback (most recent call last):
2022-06-05T13:47:06.815885+00:00 app[worker.1]: File "/app/main.py", line 12, in <module>
2022-06-05T13:47:06.816238+00:00 app[worker.1]: driver = webdriver.Chrome(executable_path=os.environ['CHROMEDRIVER_PATH'], options=options)
2022-06-05T13:47:06.816242+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/selenium/webdriver/chrome/webdriver.py", line 70, in __init__
2022-06-05T13:47:06.816407+00:00 app[worker.1]: super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
2022-06-05T13:47:06.816422+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/selenium/webdriver/chromium/webdriver.py", line 92, in __init__
2022-06-05T13:47:06.816570+00:00 app[worker.1]: RemoteWebDriver.__init__(
2022-06-05T13:47:06.816594+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 275, in __init__
2022-06-05T13:47:06.816794+00:00 app[worker.1]: self.start_session(capabilities, browser_profile)
2022-06-05T13:47:06.816809+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 365, in start_session
2022-06-05T13:47:06.817076+00:00 app[worker.1]: response = self.execute(Command.NEW_SESSION, parameters)
2022-06-05T13:47:06.817091+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 430, in execute
2022-06-05T13:47:06.817333+00:00 app[worker.1]: self.error_handler.check_response(response)
2022-06-05T13:47:06.817348+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
2022-06-05T13:47:06.817529+00:00 app[worker.1]: raise exception_class(message, screen, stacktrace)
2022-06-05T13:47:06.817616+00:00 app[worker.1]: selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed.
2022-06-05T13:47:06.817616+00:00 app[worker.1]: (unknown error: DevToolsActivePort file doesn't exist)
2022-06-05T13:47:06.817617+00:00 app[worker.1]: (The process started from chrome location /app/.apt/opt/google/chrome/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
希望任何人都能夠提供幫助。
版本 :
解決方案
使用selenium4
作為 key executable_path
已棄用,您必須使用Service()
類的實例以及ChromeDriverManager().install()
命令,如下所示。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options()
options.add_argument("start-maximized")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get("https://www.google.com")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.