要在AWS Lambda Python 3.7中解决“无法使用此命令获取Chrome版本:google-chrome --version”的问题,可以尝试使用以下解决方法:
使用Chrome Headless
pip install selenium
pip install chromium-chromedriver-binary
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless") # 在无界面模式下运行Chrome
chrome_options.add_argument("--no-sandbox") # 禁用沙盒模式
# 创建WebDriver实例
driver = webdriver.Chrome(options=chrome_options)
使用Chrome Lambda Layer
import os
CHROME_PATH = "/opt/headless-chromium" # Layer中Chrome二进制文件的路径
CHROMEDRIVER_PATH = "/opt/chromedriver" # Layer中ChromeDriver二进制文件的路径
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.binary_location = CHROME_PATH
# 设置Chrome和ChromeDriver的路径
os.environ["PATH"] += os.pathsep + CHROME_PATH + os.pathsep + CHROMEDRIVER_PATH
# 创建WebDriver实例
driver = webdriver.Chrome(chrome_options=chrome_options)
无论您选择哪种方法,都需要确保在Lambda函数的执行角色中具有适当的权限。此外,还应注意在网络爬取之前,可能需要等待Chrome完全加载和渲染页面的时间。这可以通过使用WebDriver的implicitly_wait
方法来实现,例如:
driver.implicitly_wait(10) # 等待10秒钟
这些解决方法应该能够帮助您在AWS Lambda Python 3.7中成功运行网络爬虫。
上一篇:AWS Lambda Python 3.6空值意外结果 (!= None:)
下一篇:AWS Lambda Python 3.7: 无法导入模块'lambda_function': 缺少必需的依赖项['numpy']。