如何使用Selenium而不频繁遇到ChromeDriver版本错误?
现在有没有办法在我运行Selenium脚本时自动安装正确版本的ChromeDriver呢?
今天我遇到了一个关于ChromeDriver和Chrome版本的错误。为了修复这个问题,我搞得一头雾水,卸载了又安装,环境也换了,浪费了很多时间。最后的问题其实很简单,只是去这里下载最新的ChromeDriver版本就解决了(这其实是我最开始尝试的,但我发誓第一次检查时版本号是一样的)。
在我搜索的过程中,发现了一个叫webdriver-manager的包,看起来很有用,但我在安装时遇到了麻烦,也不确定它是否应该和最新版本的Selenium一起使用(我现在用的是4.18.0)。我大约每个月运行一次这个代码,之前也遇到过版本问题,所以如果有一种间接的方法可以访问ChromeDriver,而不需要每次新版本出来都自己下载,那就太好了。
这是我目前使用的代码,其中chromedriver_path_variable
指向我电脑上ChromeDriver的本地安装路径。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
#Set up webdriver to read page
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
service = Service(executable_path=chromedriver_path_variable)
driver = webdriver.Chrome(service=service, options=option)
2 个回答
0
你可以使用 webdriver-manager
这个库来完成这个任务。
首先,你需要运行 pip install webdriver-manager
来安装它。
在这个情况下,webdriver manager 会自动安装最新版本的 chromedriver。这个例子应该可以正常工作。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
option = webdriver.ChromeOptions()
option.add_argument("--headless")
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install(), option=option))
0
安装 pip install webdriver-manager
这个命令就可以了,之后你就可以开始使用了!
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
import time
# Set up WebDriver options
options = Options()
options.add_argument('--headless')
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
# Use webdriver_manager to automatically install the correct ChromeDriver
driver_service = Service(ChromeDriverManager().install())
# Set up the WebDriver
driver = webdriver.Chrome(service=driver_service, options=options)
driver.get("https://twitter.com/home")
time.sleep(10) # Wait for 10 seconds