python爬虫报错:This version of ChromeDriver only supports Chrome version 114

使用selenium爬取网页数据,一运行程序就报错:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114

Current browser version is 117.0.5938.149 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe

就很奇怪,之前都是没问题的,今天就不行了,查了网上的资料说是浏览器升级了,跟selenium的浏览器驱动不一致造成的,解决办法就是:

1)换浏览器版本;

2)换浏览器驱动版本;

第一种感觉不靠谱,后面浏览器自动升级了还得出现这个问题;所以就用第二种,参考网上的说法,去CNPM Binaries Mirror这里下载浏览器对应的驱动,可是我的浏览器是117版本的,这里面根本找不到

要正确解决这个问题,一个好方法是使用WebDriverManager库。它是一个开源的Java库,以完全自动化的方式执行Selenium WebDriver所需的驱动程序的管理(即下载、设置和维护)。其最新版本提供了其他相关功能,如发现本地系统中安装的浏览器的能力,无缝运行Docker容器中的浏览器,以及监控能力,废话不多说,直接上代码。

1、添加maven依赖

在java项目中添加如下依赖(我的是springboot项目):

XML 复制代码
        <dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.github.bonigarcia</groupId>
			<artifactId>webdrivermanager</artifactId>
			<version>5.5.3</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents.client5</groupId>
			<artifactId>httpclient5</artifactId>
			<version>5.2.1</version>
			<scope>test</scope>
		</dependency>

2、使用

新建一个WebDriverManagerTests测试类

XML 复制代码
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

/**
 * @description:
 * @author: ndf
 * @create: 2023-10-30 11:29
 **/
public class WebDriverManagerTests {

    static WebDriver browser;

    @BeforeAll
    static void setup() {

        WebDriverManager.chromedriver().setup();

        ChromeOptions options = new ChromeOptions();
        options.setHeadless(false);
        options.addArguments("start-maximized"); // open Browser in maximized mode
        options.addArguments("disable-infobars"); // disabling infobars
        options.addArguments("--disable-extensions"); // disabling extensions
        options.addArguments("--disable-gpu"); // applicable to Windows os only
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.addArguments("--no-sandbox"); // Bypass OS security model
        options.addArguments("--disable-in-process-stack-traces");
        options.addArguments("--disable-logging");
        options.addArguments("--log-level=3");
        options.addArguments("--remote-allow-origins=*");

        browser = new ChromeDriver(options);
    }

    @Test
    @DisplayName("The google.com web site should have the correct title")
    void testProjectWebSiteShouldHaveCorrectTitle() {
        browser.get("https://google.com/");
        Assertions.assertEquals("Google", browser.getTitle());
    }
}

执行上面代码后,setup()方法会尝试查找机器上安装的浏览器版本。然后,使用浏览器版本,它试图通过各种方法找到合适的驱动程序版本。一旦发现驱动程序版本,WebDriverManager会将驱动程序下载到本地缓存(位于~/.cache/selenium/)。在控制台也可看到打印日志:

类似地,我们可以使用以下语句之一来设置Firefox、Edge、Opera、Chromium和Internet Explorer的驱动程序,如下所示 :

java 复制代码
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.chromiumdriver().setup()
WebDriverManager.iedriver().setup();

3、修改驱动路径

修改Python代码,添加executable_path参数,指定浏览器驱动路径

python 复制代码
browser = webdriver.Chrome(executable_path=r'C:\Users\Administrator\.cache\selenium\chromedriver\win64\117.0.5938.149\chromedriver.exe',options=chrome_options)

运行程序,OK,大功告成!

注意: 在第2步中,运行java代码下载浏览器驱动这里,可能要爬梯到外网,反正我是开了vpn的!!!

相关推荐
tudficdew2 分钟前
实战:用Python分析某电商销售数据
jvm·数据库·python
sjjhd65224 分钟前
Python日志记录(Logging)最佳实践
jvm·数据库·python
2301_821369611 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
机 _ 长1 小时前
YOLO26 改进 | 基于特征蒸馏 | 知识蒸馏 (Response & Feature-based Distillation)
python·深度学习·机器学习
2401_832131952 小时前
Python单元测试(unittest)实战指南
jvm·数据库·python
vx_BS813302 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
gzxx2007sddx3 小时前
windows vnpy运行过程及问题记录
python·量化·vnpy
算法_小学生3 小时前
LeetCode 热题 100(分享最简单易懂的Python代码!)
python·算法·leetcode
230万光年的思念3 小时前
【无标题】
python