美文网首页
用代码更新chromedriver

用代码更新chromedriver

作者: 一见你就笑嘻嘻 | 来源:发表于2019-10-16 16:36 被阅读0次
    • 在使用selenium的过程中,总是冷不防的出现chrome和chromedriver的版本不兼容问题,索性不关闭chrome的更新了,尝试了以下代码可以吧driver更新到最新版本

    • 注意事项

    1、chromedriver最新版本的版本号不能大于chrome最新版本的
    2、请确保chrome是最新版
    3、若出现chromedriver版本大于chrome版本时使用链接去手动下载后替换chromedriver.exe

    • 代码如下
    # coding=gbk
    import requests
    import re
    import os
    import zipfile
    
    
    def get_latest_version(url):
        '''查询最新的Chromedriver版本'''
        rep = requests.get(url).text
        time_list = []  # 用来存放版本时间
        time_version_dict = {}  # 用来存放版本与时间对应关系
        result = re.compile(r'\d.*?/</a>.*?Z').findall(rep)  # 匹配文件夹(版本号)和时间
        for i in result:
            time = i[-24:-1]  # 提取时间
            version = re.compile(r'.*?/').findall(i)[0]  # 提取版本号
            time_version_dict[time] = version  # 构建时间和版本号的对应关系,形成字典
            time_list.append(time)  # 形成时间列表
        latest_version = time_version_dict[max(time_list)][:-1]  # 用最大(新)时间去字典中获取最新的版本号
        return latest_version
    
    
    def download_driver(download_url):
        '''下载文件'''
        file = requests.get(download_url)
        with open("chromedriver.zip", 'wb') as zip_file:  # 保存文件到脚本所在目录
            zip_file.write(file.content)
            print('下载成功')
    
    
    def get_version():
        '''查询系统内的Chromedriver版本'''
        outstd2 = os.popen('chromedriver --version').read()
        return outstd2.split(' ')[1]
    
    
    def get_path():
        '''查询系统内Chromedriver的存放路径'''
        outstd1 = os.popen('where chromedriver').read()
        return outstd1.strip('chromedriver.exe\n')
    
    
    def unzip_driver(path):
        '''解压Chromedriver压缩包到指定目录'''
        f = zipfile.ZipFile("chromedriver.zip", 'r')
        for file in f.namelist():
            f.extract(file, path)
    
    
    if __name__ == "__main__":
        driverpath = get_path()
        print('chromedriver的保存地址是:', driverpath)
        url = 'http://npm.taobao.org/mirrors/chromedriver/'
        latest_version = get_latest_version(url)
        print('最新的chromedriver版本为:', latest_version)
        version = get_version()
        print('当前系统内的Chromedriver版本为:', version)
        if version == latest_version:
            print('当前系统内的Chromedriver已经是最新的')
        else:
            print('当前系统内的Chromedriver不是最新的,需要进行更新')
            download_url = url + latest_version + '/chromedriver_win32.zip'  # 拼接下载链接
            download_driver(download_url)
            path = get_path()
            print('替换路径为:', path)
            unzip_driver(path)
            print('更新后的Chromedriver版本为:', get_version())
    
    

    相关文章

      网友评论

          本文标题:用代码更新chromedriver

          本文链接:https://www.haomeiwen.com/subject/pfeumctx.html