第一种手动实现:

来源 https://www.codeleading.com/article/73395290617/

import os
import re
import winreg
import zipfile
import requests base_url = 'http://npm.taobao.org/mirrors/chromedriver/'
version_re = re.compile(r'^[1-9]\d*\.\d*.\d*') # 匹配前3位版本号的正则表达式 def getChromeVersion():
"""通过注册表查询chrome版本"""
try:
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\Google\\Chrome\\BLBeacon')
value, t = winreg.QueryValueEx(key, 'version')
return version_re.findall(value)[0] # 返回前3位版本号
except WindowsError as e:
# 没有安装chrome浏览器
return "1.1.1" def getChromeDriverVersion():
"""查询Chromedriver版本"""
outstd2 = os.popen('cd D:\Python\chromedriver && chromedriver --version').read()
try:
version = outstd2.split(' ')[1]
version = ".".join(version.split(".")[:-1])
return version
except Exception as e:
return "0.0.0" def getLatestChromeDriver(version):
# 获取该chrome版本的最新driver版本号
url = f"{base_url}LATEST_RELEASE_{version}"
latest_version = requests.get(url).text
print(f"与当前chrome匹配的最新chromedriver版本为: {latest_version}")
# 下载chromedriver
print("开始下载chromedriver...")
download_url = f"{base_url}{latest_version}/chromedriver_win32.zip"
file = requests.get(download_url)
with open("D:\Python\chromedriver\chromedriver.zip", 'wb') as zip_file: # 保存文件到脚本所在目录
zip_file.write(file.content)
print("下载完成.")
# 解压
f = zipfile.ZipFile("D:\Python\chromedriver\chromedriver.zip", 'r')
for file in f.namelist():
f.extract(file,'D:\Python\chromedriver')
print("解压完成.") def checkChromeDriverUpdate():
chrome_version = getChromeVersion()
print(f'当前chrome版本: {chrome_version}')
driver_version = getChromeDriverVersion()
print(f'当前chromedriver版本: {driver_version}')
if chrome_version == driver_version:
print("版本兼容,无需更新.")
return
print("chromedriver版本与chrome浏览器不兼容,更新中>>>")
try:
getLatestChromeDriver(chrome_version)
print("chromedriver更新成功!")
except requests.exceptions.Timeout:
print("chromedriver下载失败,请检查网络后重试!")
except Exception as e:
print(f"chromedriver未知原因更新失败: {e}") if __name__ == "__main__":
checkChromeDriverUpdate()

第二种轮子 python库:

https://github.com/SergeyPirogov/webdriver_manager

#安装依赖

pip install webdriver_manager.chrome
#代码 from webdriver_manager.chrome import ChromeDriverManager
browser = webdriver.Chrome(ChromeDriverManager().install())

最新文章

  1. SQL Server 2016 CTP2.2 的关键特性
  2. trace与代码跟踪服务
  3. KendoUI系列:Grid
  4. [Java] 将标准字符流写入到文件中(通过控制台写一个html程序,并保存)
  5. "大哥,割草机借我用一下,我修整一下草坪。" ---- 谈谈this与JavaScript函数调用的不解之缘
  6. javascript笔记6之函数
  7. Git双机同步
  8. 跨平台C/C++集成开发环境-Code::Blocks-内置GCC
  9. Windows Server 2012的配置与部署
  10. 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记
  11. python字符串问题
  12. 【66】Scanner类用法详解
  13. Spring里的Async注解实现异步操作
  14. NO NEWS IS GOOD NEWS
  15. 【CTSC2018】暴力写挂(边分治,虚树)
  16. 【听RQY大佬“训话”有感】
  17. Laravel 5.2问题-----postman进api的post请求,为什么出现Forbidden?
  18. Http协议响应状态类别及说明
  19. 图片加载------reactVirtualized
  20. opencv3.2将中文输出到图片上

热门文章

  1. KMP 算法实现
  2. Mybatis 中传入List实现 批量插入、批量更新、批量删除
  3. Software_programming_tools_IDEA
  4. 关于head中代码被挤到body中的问题
  5. Docker 容器基本操作(基础)
  6. JS中两个数组对象筛选
  7. React自定义组件参数小驼峰命名提示警告 Warning: React does not recognize the `xxXxx` prop on a DOM element.
  8. jquery随手做的一个滚动库 我称之为 idkScroll
  9. React-Navigation 5.x 的 demo案例
  10. [Notes-DS-1]时间复杂度的几个概念和计算方法