我正在使用scrapy https://pypi.org/project/scrapy-selenium/来驱动我的蜘蛛,并将它托管在Heroku上。我面临的挑战是,我似乎无法解决如何配置路径以找到chromedriver和heroku运行该应用程序所需的铬二进制文件的问题。
我已经安装了我的环境并安装了构建包。
BuildPacks
$ heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-chromedriver
$ heroku buildpacks:add --index 2 https://github.com/heroku/heroku-buildpack-google-chrome环境在heroku配置变量中的设置
GOOGLE_CHROME_PATH = '/app/.apt/usr/bin/google_chrome'
CHROMEDRIVER_PATH = '/app/.chromedriver/bin/chromedriver'现在我迷路的地方是如何配置上面的设置,以便在我的蜘蛛的settings.py文件中使用这个选项。
SELENIUM_DRIVER_NAME = 'firefox'
SELENIUM_DRIVER_EXECUTABLE_PATH = which('geckodriver')
SELENIUM_DRIVER_ARGUMENTS=['-headless'] # '--headless' if using chrome instead of firefox通过使用这个设置,它在我的本地机器上工作得很好。
chrome_path = "/Users/username/chromepath/chromedriver"
SELENIUM_DRIVER_NAME = 'chrome' # Change to your browser name
SELENIUM_DRIVER_EXECUTABLE_PATH = chrome_path
SELENIUM_DRIVER_ARGUMENTS=['--headless'] # '--headless' if using chrome instead of firefox我在互联网上找到了一些解决方案,但只有当我使用webdriver来获得请求时,它们才会起作用。
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)因此,我现在的问题是如何在heroku上设置scrapy-selenium路径来处理我的环境。
发布于 2020-09-19 03:33:21
我相信你可能已经解决了这个问题,但是为了另一个可能正在寻找这个解决方案的人。
import os
CHROMEDRIVER_PATH = '/app/.chromedriver/bin/chromedriver'
SELENIUM_DRIVER_NAME = 'chrome'
SELENIUM_DRIVER_EXECUTABLE_PATH = CHROMEDRIVER_PATH
SELENIUM_DRIVER_ARGUMENTS=['--headless', "--no-sandbox", "--disable-gpu", "--disable-dev-shm-usage"]
SELENIUM_BROWSER_EXECUTABLE_PATH = os.environ.get("GOOGLE_CHROME_BIN", "chromedriver")此设置成功地部署了我的selenium_scrapy脚本。但该死的,我在这次修复之前受了苦。干杯
https://stackoverflow.com/questions/61787960
复制相似问题