python - 如何使用 python 代码在 Linux 上运行的 azure 函数应用程序中打开 Web 浏览器
问题描述
我用 python 代码创建了一个 azure 函数应用程序。我的代码将抓取tripadvisor 页面,因此我使用Selenium 打开浏览器并获取tripadvisor 页面的源代码。在我的机器上本地,一切正常,但在天蓝色上,我创建的功能应用程序无法打开网络浏览器。我得到的错误是“geckodriver”可执行文件可能有错误的权限。
我尝试像这样更改权限
但同样的问题再次发生
AppInsightsScraper.my_logger.info('opening browser')
cmd = 'sudo chmod 777 "/home/site/wwwroot/geckodriver"'
AppInsightsScraper.my_logger.info(os.system(cmd))
checkCmd = 'ls -l'
AppInsightsScraper.my_logger.info(os.system(checkCmd))
AppInsightsScraper.my_logger.info('test modif permission')
browser = webdriver.Firefox(executable_path='/home/site/wwwroot/geckodriver')
AppInsightsScraper.my_logger.info('browser opened')
预期的结果是打开浏览器并继续执行我的代码,但我在 azure 门户“geckodriver”可执行文件上收到权限错误可能有错误的权限。 在此处输入图像描述 我什至无法理解 32512 和 0 在日志信息中的含义
解决方案
该错误可能意味着 geckodriver 不在路径上,因此它无法执行您希望它执行的操作。我在 Azure 上的一个 Django 应用服务上收到了 Chromedriver 的类似错误,经过数小时在线搜索解决方案后,恐怕我有坏消息要告诉你。
- Azure 不允许您安装应用程序运行所需的自定义软件(firefox 用于 geckodriver,chrome 用于 chromedriver 等)
- 即使莫名其妙地有可用的 firefox,您也必须为 geckodriver 和 firefox 指定环境变量,这是 azure 上的另一项繁忙任务。
但是,如果您可以部署在其他地方而不是 Azure(Heroku 为我工作),那么还有另一种选择。您可以轻松添加 firefox 二进制文件和 geckodriver buildpack 并设置路径变量,它会像魅力一样运行。检查本教程是否相同,希望对您有所帮助。
推荐阅读
- python - pandas中的groupby元素如何基于连续的行值
- python - 我在 python 中的 if -else 程序中遇到编译错误。代码是用 Python 3 编写的,谁能帮助我
- scala - scala中基于包的自动修复目录结构
- java - 未决意图警报管理器不能调用两次
- java - 将捕获的图像转换为位图
- c++ - Objective-C 到 C++ 将二进制文件读入多维浮点数组
- css - 将 CSS 规则应用于多个页面
- flutter - 如何在不使用 Playstore 或 App Store 的情况下升级我的 Flutter 应用程序?
- typescript - 单元测试:响应自定义模式弹出窗口
- r - Dplyr pipe groupby top_n 在组中没有得到 top_n