Chromedriver116版去哪找,以及自动更新Chromedriver的Python脚本

快速跳转指定步骤

  • 1. 查看Chrome浏览器的版本
  • 2. 找到对应的chromedriver
  • 3. 安装ChromeDriver
  • 4.一个Python脚本,用于自动访问淘宝镜像点、下载最新版本Win32版本Chromedriver,解压存放到Python根目录。
  • 5.我又萌发了新的念头

1. 查看Chrome浏览器的版本

点进这个网站查看:chrome://settings/help
Chromedriver116版去哪找,以及自动更新Chromedriver的Python脚本_第1张图片

2. 找到对应的chromedriver

正常的话,应该去这个里面去找:https://chromedriver.storage.googleapis.com/index.html或者访问淘宝的镜像站点http://npm.taobao.org/mirrors/chromedriver/(国内网络访问这个会比较便捷快速,下载也快),可是现在这里面列出来最新版本的Chromedriver只对应到了 Chrome 114,并不支持Chrome 116。(由于淘宝是前者的镜像站,所以而这更新的速度理论上差不太多,换而言之,今天就是都没有)

然后,在https://stackoverflow.com/的一则问答中,看到有答主给出的Chromedriver团队GitHub上的仓库已经更新有Chromedriver的各版本下载链接https://googlechromelabs.github.io/chrome-for-testing/#stable。这里已经有了Chrome最新测试版本的Chrome 以及对应的Chromedriver可下载可用。

3. 安装ChromeDriver

就把刚刚下载的压缩包chromedriver-win64.zip解压存放在任意一个已经添加到系统环境变量PATH的文件夹就行,我的习惯是默认解压到Python目录下(因为Python目录本身就已经需要被设置为环境变量Path)

PS:怎么额外添加到环境变量,可行百度一哈~

4.一个Python脚本,用于自动访问淘宝镜像点、下载最新版本Win32版本Chromedriver,解压存放到Python根目录。

import os
import re
import sys
import winreg
import zipfile
from pathlib import Path
import requests
import time
python_root = Path(sys.executable).parent  # python安装目录
base_url = 'http://npm.taobao.org/mirrors/chromedriver/'  # chromedriver在国内的镜像网站
version_re = re.compile(r'^[1-9]\d*\.\d*.\d*')  # 匹配前3位版本信息


def get_chrome_version():
    """通过注册表查询Chrome版本信息: HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\BLBeacon: version"""
    try:
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'SOFTWARE\Google\Chrome\BLBeacon')
        value = winreg.QueryValueEx(key, 'version')[0]
        return version_re.findall(value)[0]
    except WindowsError as e:
        return '0.0.0'  # 没有安装Chrome浏览器


def get_chrome_driver_version():
    try:
        result = os.popen('chromedriver --version').read()
        version = result.split(' ')[1]
        return '.'.join(version.split('.')[:-1])
    except Exception as e:
        return '0.0.0'  # 没有安装ChromeDriver


def get_latest_chrome_driver(chrome_version):
    url = f'{base_url}LATEST_RELEASE_{chrome_version}'
    latest_version = requests.get(url).text
    download_url = f'{base_url}{latest_version}/chromedriver_win64.zip'#
    # 下载chromedriver zip文件
    response = requests.get(download_url)
    local_file = python_root / 'chromedriver.zip'
    with open(local_file, 'wb') as zip_file:
        zip_file.write(response.content)

    # 解压缩zip文件到python安装目录
    f = zipfile.ZipFile(local_file, 'r')
    for file in f.namelist():
        f.extract(file, python_root)
    f.close()

    local_file.unlink()  # 解压缩完成后删除zip文件


def check_chrome_driver_update():
    chrome_version = get_chrome_version()
    driver_version = get_chrome_driver_version()
    if chrome_version == driver_version:
        print('No need to update')
    else:
        try:
            get_latest_chrome_driver(chrome_version)
        except Exception as e:
            print(f'Fail to update: {e}')
            time.sleep(20)#更新失败,驻留界面20秒以便来得及发现问题
        else:
            print("Success to download chrome_driver.")


if __name__ == '__main__':
    print(python_root)
    check_chrome_driver_update()

这个脚本我是添加到“任务程序计划”了,设为每天自动运行一次,在今天的Chrome116版本更新中本脚本暂时无法正确起效。只能说是因为Chrome版本更新迭代可能出了问题,115版本刚出没几天,资源站点还没来得及更新115的Chromedriver,他这边就直接上116了。只能是倒逼我们手动去https://googlechromelabs.github.io/chrome-for-testing/#stable下载更新。

5.我又萌发了新的念头

要彻底解决Chrome和Chromedriver版本不兼容的问题,可能最好的方法就是从https://googlechromelabs.github.io/chrome-for-testing/#stable一并下载安装Chrome和Chromedriver。这样就能保持Chrome的更新频次掌控在我们程序员的手中,不必隔几个月就被坑一回。代价就是登录状态应该会被搞没掉

你可能感兴趣的:(python,chrome)