我有一个使用Flask的应用程序,它使用Selenium和Chrome webdriver来刮网。当我在本地进行测试时,它可以完美运行。但是,我尝试部署到Heroku并且我一直收到以下两个错误:
PermissionError: [Errno13] Permission denied 'chromedriver/chromedriver.exe'
selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
这是我的代码中我引用chromedriver的部分。
options = webdriver.ChromeOptions()
options.add_argument('headless')
browser = webdriver.Chrome(executable_path="chromedriver/chromedriver.exe", chrome_options=options)
browser.get('https://sis.pleasantonusd.net/StudentPortal')
文件chromedriver.exe
位于文件夹chromedriver
中,该文件夹与文件GradeScraper.py(带有Selenium代码的文件)齐平。这是目录结构:
QC-Scraper
|- app.py
|- GradeScraper.py
|- Procfile
|- requirements.txt
|- README.md
|- chromedriver
|- chromedriver.exe
|- templates
|- grades.html
在结构中,app.py
是主要的Flask应用程序,其中调用了app.run()
函数。 GradeScraper.py
是包含实际抓取代码的部分,会导入app.py
。
我会尽力提供必要的额外信息。非常感谢帮助!
提前致谢!
编辑:我将Windows chromedriver更改为Linux chromedriver并进行部署,错误仍然存在。 EDIT2:我还在proc文件chmod +x chromedriver/chromedriver
中添加了一个release命令。仍然无法工作。
答案 0 :(得分:0)
它告诉您chromedriver.exe
没有设置可执行位。
但是我认为这并不重要,因为你试图在Heroku所在的Linux机器上运行Windows程序(.exe)。