python - 在 Heroku 上使用 Python selenium 运行 ChromeDriver

标签 python selenium heroku webdriver selenium-chromedriver

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

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

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

最佳答案

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

  • 我在 heroku 上添加了以下构建包: https://github.com/heroku/heroku-buildpack-xvfb-google-chrome (安装 chrome,因为 chromedriver 需要它)和 https://github.com/heroku/heroku-buildpack-chromedriver .
  • 我创建了一个环境变量 GOOGLE_CHROME_BIN,其中包含 chrome 在 heroku 上的路径:/app/.apt/usr/bin/google-chrome 和一个名为 CHROMEDRIVER_PATH 的环境变量,其中包含 chromedriver 在 heroku 上的路径:/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 为我解决了这个问题)。

关于python - 在 Heroku 上使用 Python selenium 运行 ChromeDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41059144/

相关文章:

ruby-on-rails - 同一个应用程序中的 Heroku Delayed Job 和 Sidekiq

python - 扩展用户模型 Django REST framework 3.x.x

python - Django:如何从引用类中的类方法获取外键的类?

selenium - java.lang.NoClassDefFoundError : freemarker/template/TemplateModelException 错误

java - BrowserMobProxy 不会捕获 har 文件中的任何条目

heroku - 您如何判断通过heroku cli运行命令是否成功?

python - 使用额外功能处理错误

python - charm.pool.map 和 tq​​dm : obtain a progressbar

java - 使用 Selenium Webdriver 之前无法找到并单击复选框::

ruby-on-rails - rails 4 启用 rails 来服务静态 Assets : is it correct?(在 heroku 上)