如何将 selenium 和 chromedriver 添加到 AWS Lambda 函数?
How do I add selenium & chromedriver to an AWS Lambda function?
我正在尝试在 aws lambda 上托管网络抓取功能,并且 运行 遇到了 selenium 的网络驱动程序错误。有人可以告诉我您如何添加 chromedriver.exe 文件以及如何让路径在 AWS Lambda 函数中工作。这是我的函数中与硒有关的部分,
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
url = '``https://covid19criticalcare.com/pharmacies/``'
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
driver.get(url)
wait = WebDriverWait(driver, 5)
我尝试使用 chromedriver.exe 文件创建一个 lambda 层
我遵循了本指南 (https://dev.to/awscommunity-asean/creating-an-api-that-runs-selenium-via-aws-lambda-3ck3) 但我无法添加无头铬,因为文件大小超出了我的功能限制(我的 pandas 和 numpy依赖层占据了我的大部分 space)
我尝试了 driver = webdriver.Chrome(使用路径变量)并尝试了不同的路径,但不确定路径的开头是什么,因为它在 lambda 函数上。
过去几天我一直在努力向 aws lambda 添加硒。我有一个网络 scraping 函数(使用 selenium 和 google api),它从网站提取数据并将输出写入 google 电子表格。让我解释一下我一步一步做了什么,以及我是如何最终成功的,这样你就不必像我一样处理它了:
1- 我试图将硒添加为此处描述的层 https://www.youtube.com/watch?v=jWqbYiHudt8. What i ended up was, i was succesfull with adding selenium but deployment package is over 250mb (describe lambda quotaas here: ),但它不起作用。
2- 为了克服部署包的大小,添加为容器映像是一个不错的选择(10 GB 的部署包大小限制)。这是添加为容器图像 https://cloudbytes.dev/snippets/run-selenium-in-aws-lambda-for-ui-testing#using-the-github-repository-directly 的一个很好的解释。我试过了,但由于 missing/wrong 网络驱动程序(shell 脚本似乎有误),我无法按照描述进行部署
3- 最后,我完全能够将我的 selenium 函数发布为 docker 图像,如此处所述 https://github.com/umihico/docker-selenium-lambda。
有很多关于哪个版本适用于什么的讨论。关于 selenium 最重要的问题是,部署到 aws lambda 时必须注意包和驱动程序版本。
我正在尝试在 aws lambda 上托管网络抓取功能,并且 运行 遇到了 selenium 的网络驱动程序错误。有人可以告诉我您如何添加 chromedriver.exe 文件以及如何让路径在 AWS Lambda 函数中工作。这是我的函数中与硒有关的部分,
from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
url = '``https://covid19criticalcare.com/pharmacies/``'
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
driver.get(url)
wait = WebDriverWait(driver, 5)
我尝试使用 chromedriver.exe 文件创建一个 lambda 层
我遵循了本指南 (https://dev.to/awscommunity-asean/creating-an-api-that-runs-selenium-via-aws-lambda-3ck3) 但我无法添加无头铬,因为文件大小超出了我的功能限制(我的 pandas 和 numpy依赖层占据了我的大部分 space)
我尝试了 driver = webdriver.Chrome(使用路径变量)并尝试了不同的路径,但不确定路径的开头是什么,因为它在 lambda 函数上。
过去几天我一直在努力向 aws lambda 添加硒。我有一个网络 scraping 函数(使用 selenium 和 google api),它从网站提取数据并将输出写入 google 电子表格。让我解释一下我一步一步做了什么,以及我是如何最终成功的,这样你就不必像我一样处理它了:
1- 我试图将硒添加为此处描述的层 https://www.youtube.com/watch?v=jWqbYiHudt8. What i ended up was, i was succesfull with adding selenium but deployment package is over 250mb (describe lambda quotaas here:
2- 为了克服部署包的大小,添加为容器映像是一个不错的选择(10 GB 的部署包大小限制)。这是添加为容器图像 https://cloudbytes.dev/snippets/run-selenium-in-aws-lambda-for-ui-testing#using-the-github-repository-directly 的一个很好的解释。我试过了,但由于 missing/wrong 网络驱动程序(shell 脚本似乎有误),我无法按照描述进行部署
3- 最后,我完全能够将我的 selenium 函数发布为 docker 图像,如此处所述 https://github.com/umihico/docker-selenium-lambda。
有很多关于哪个版本适用于什么的讨论。关于 selenium 最重要的问题是,部署到 aws lambda 时必须注意包和驱动程序版本。