【问题标题】:Running ChromeDriver with Python selenium on Heroku在 Heroku 上使用 Python selenium 运行 ChromeDriver
【发布时间】:2017-04-24 20:34:02
【问题描述】:

所以我在 Heroku 上有一个 Flask 服务器,它已经按预期工作了一段时间。现在,根据新的要求,我需要向 Flask 服务器添加功能以从外部网站获取页面。由于原因我最了解的是,我正在使用 Selenium 和 Chrome 网络驱动程序来执行此操作。在本地我能够设置它并且它工作正常,但我很不确定如何在 Heroku 服务器上设置它。我读了一些关于 buildpacks 的内容,发现了这个用于 ChromeDriver 的 buildpack:

https://elements.heroku.com/buildpacks/jimmynguyc/heroku-buildpack-chromedriver

但是,我不确定如何进一步进行。如何安装 chromium 浏览器本身以及还需要什么来将其全部绑定?

【问题讨论】:

    标签: python selenium heroku webdriver selenium-chromedriver


    【解决方案1】:

    我遇到了同样的问题,以下步骤对我来说效果很好:

    • 我在 heroku 上添加了以下构建包: https://github.com/heroku/heroku-buildpack-xvfb-google-chrome (安装 chrome,因为 chromedriver 需要它)和 https://github.com/heroku/heroku-buildpack-chromedriver
    • 我创建了一个环境变量 GOOGLE_CHROME_BIN,其路径为 heroku 上的 chrome:/app/.apt/usr/bin/google-chrome,以及一个名为 CHROMEDRIVER_PATH 的环境变量,其路径为 heroku 上的 chromedriver:/app/.chromedriver /bin/chromedriver。
    • 在我的python文件中,我配置了chromedriver:

      chrome_options = Options()
      chrome_options.binary_location = GOOGLE_CHROME_BIN
      chrome_options.add_argument('--disable-gpu')
      chrome_options.add_argument('--no-sandbox')
      driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, chrome_options=chrome_options)
      

    (首先,我尝试不带参数配置 chromedriver,但遇到以下错误:“Chrome 无法启动:崩溃”。--disable-gpu 和 --no-sandbox 为我解决了问题)。

    【讨论】:

    • 感谢您抽出宝贵时间回复此问题,尽管它较旧。它使用 heroku 上的其他构建包解决了我的问题。
    • 嗨@Russell D,你能分享你的解决方案吗?
    • @Ronnie - 我遵循 Emanoeli M 提供的解决方案...不幸的是,我拆除了 Heroku 部署的应用程序...我为他们付费但没有使用他们正在做的事情,所以我取消了插入并删除我设置的实例,因此我无法访问我所做的事情。
    • @Russell,感谢您的回复。尽管性能不稳定,但我已经能够使其工作。有时它无法找到元素并超时。 stackoverflow.com/questions/56661348/…
    【解决方案2】:

    在您的 Heroku 应用中,转到“设置”并添加以下构建包:

    此外,在您的 Python 脚本中,您必须设置一些 Chrome 选项,以便您的脚本在 Heroku 上运行而不会出错。

    import time
    
    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    
    gChromeOptions = webdriver.ChromeOptions()
    gChromeOptions.add_argument("window-size=1920x1480")
    gChromeOptions.add_argument("disable-dev-shm-usage")
    gDriver = webdriver.Chrome(
        chrome_options=gChromeOptions, executable_path=ChromeDriverManager().install()
    )
    gDriver.get("https://www.python.org/")
    time.sleep(3)
    gDriver.save_screenshot("my_screenshot.png")
    gDriver.close()
    

    这是我创建的更详细的帖子,以防您仍然遇到问题:https://www.jtrocinski.com/posts/Heroku-Use_Selenium_to_run_Google_Chrome_in_Python.html

    【讨论】:

      【解决方案3】:

      对于 pyppeteer

      如果有人在 Heroku 上运行并遇到同样的错误:

      添加 buildpack:buildpack 的 url 如下:

      https://github.com/jontewks/puppeteer-heroku-buildpack

      确保您使用的是--no-sandbox模式

      launch({ args: ['--no-sandbox'] })
      

      【讨论】:

        猜你喜欢
        • 2014-10-07
        • 2017-05-25
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        • 2021-04-13
        相关资源
        最近更新 更多