我正在使用
Python
和 Selenium
上的 AWS Lambdas
进行爬行。
我已将 Python
更新为 3.11,将 Selenium
更新为 4.18.0,但随后我的爬虫停止工作。
这是Selenium
的代码:
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
def get_headless_driver():
options = Options()
service = Service(executable_path=r'/opt/chromedriver')
options.binary_location = '/opt/headless-chromium'
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--single-process')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=1920x1080')
options.add_argument('--start-maximized')
return webdriver.Chrome(service=service, options=options)
def get_selenium_driver():
return get_local_driver() if os.environ.get('STAGE') == 'local' else get_headless_driver()
这是安装代码
chromedriver
:
#! /bin/bash
# exit when any command fails
set -e
NOCOLOR='\033[0m'
GREEN='\033[0;32m'
echo -e "\n${GREEN}Installing 'headless' layer dependencies...${NOCOLOR}\n"
sudo mkdir -p layers/headless && sudo chmod 777 layers/headless && cd layers/headless
# https://github.com/adieuadieu/serverless-chrome/issues/133
echo -e "\n${GREEN}Installing Chrome Driver v2.37...${NOCOLOR}\n"
sudo curl -SL https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip > chromedriver.zip
sudo chmod 755 chromedriver.zip
sudo unzip chromedriver.zip
sudo rm chromedriver.zip
echo -e "\n${GREEN}Installing Serverless Chrome v1.0.0-37...${NOCOLOR}\n"
sudo curl -SL https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-41/stable-headless-chromium-amazonlinux-2017-03.zip > headless-chromium.zip
sudo chmod 755 headless-chromium.zip
sudo unzip headless-chromium.zip
sudo rm headless-chromium.zip
cd ../../
我收到此错误:
Message: Service /opt/chromedriver unexpectedly exited. Status code was: 127
我应该如何修复这个错误? 我还应该更新 chromedriver 和 headless 吗? 我应该选择什么版本?
从 Selenium 4.6+ 开始,您不再需要自己安装、设置或以其他方式管理驱动程序,因为它们向 Selenium 添加了 Selenium Manager。删除计算机上的所有驱动程序,删除创建 Chrome 驱动程序时的所有额外代码(请参阅文档),然后运行脚本,Selenium 将自动下载并安装驱动程序,然后在运行中使用最新的驱动程序。