我正在使用python 3.7进行网络抓取项目。 用 python 用硒和 chromediver 完成了代码.exe在窗口中,它工作正常。 我们将在 AWS Lambda 中添加脚本。 问题是我们需要指定Linux的Chrome驱动程序。
我按照 https://github.com/yai333/Selenium-UI-testing-with-AWS-Lambda-Layers 中的步骤操作。
我没有使用任何无服务器的 YML sript(我不知道相同(。 执行以下操作
我们有一台Linux机器。 创建一个虚拟的Python环境并添加Selenium模块(如 awshttps://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html#python-package-venv 中所述( 将chromdriver和Headless下载到一个文件夹中(大小很大,所以上传到S3(添加两者(Chrome Driver和Python Lib(作为层。 将 handler.py(以 https://github.com/yai333/Selenium-UI-testing-with-AWS-Lambda-Layers 为单位(粘贴到 lambdahandler 文件中。 创建示例测试,然后单击"测试"。 显示错误: 错误消息"ChromeDriver"可执行文件需要位于路径中
我可以在 S3 中上传 chrome 驱动程序并显示路径吗?
刚刚与这个确切的问题斗争了几个小时,我想我可以提供帮助。
在您的 Lambda 层中,您需要在/bin
下包含chromedriver
二进制文件。操作系统,它将看起来像这样:
layerZip/
|- bin/
|- chromedriver
在您的 lambda 函数的基础设施中,它将存在于/opt/bin/chromedriver
.因此,我们需要将 Python 指向它作为可执行文件。要使其正常工作,我必须添加以下内容:
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = "/opt/bin/chromedriver"
driver = webdriver.Chrome(executable_path="opt/bin/chromedriver", options=chrome_options)