【发布时间】:2017-12-25 19:09:34
【问题描述】:
我有一个带有 Flask 的应用程序,它使用 Selenium 和 Chrome 网络驱动程序来抓取网络。当我在本地测试它时,它可以完美运行。但是,我尝试部署到 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:我还在 procfile 中添加了一个释放命令,chmod +x chromedriver/chromedriver。还是不行。
【问题讨论】:
-
chromedriver.exe的访问权限是什么? -
你能澄清一下吗?我不明白。
-
如果有帮助的话,我是我电脑上的管理员。
-
没关系,这取决于您运行程序的用户身份。例如,通常守护程序在不同的用户上运行,以防止已经获得对某个文件的访问权限的黑客访问所有文件。
标签: python selenium heroku flask