背景
在使用selenium做爬虫的时候,由于google浏览器的升级,经常要求更新chromedriver驱动。为了解决每次都需要手动下载替换的问题,写了一个脚本可以自动执行。
import os
import re
import zipfile
import requests
url = 'https://registry.npmmirror.com/-/binary/chromedriver/'
download_finename = "chromedriver_mac64.zip"
chromeWebdrivrPath = "/usr/local/bin"
def getChromeDriverVersion():
"""查询Chromedriver版本"""
outstd2 = os.popen('chromedriver --version').read()
try:
vs = outstd2.split(' ')[1]
# version = ".".join(version.split(".")[:-1])
except Exception as e:
print(e)
finally:
return vs
def getLatestChromeDriver(version):
# 获取该chrome版本的最新driver版本号
versionlist = requests.get(url).json()
versions = [obj for obj in versionlist
# 获取版本号 如:99.0.4844.17/、LATEST_RELEASE_100
# 匹配以数字开头,版本号开头相同的驱动
if re.match(r"^\d", obj['name']) and version.split(".")[0] == obj['name'].split(".")[0]]
temp = 0
latest_version = None
for obj in versions:
num = int(obj['name'].replace("/", "").replace(".", ""))
if num > temp:
temp = num
latest_version = str(obj['name']).replace("/", "")
print(f"与当前chrome匹配的最新chromedriver版本为: {latest_version}")
# 下载chromedriver
print("开始下载chromedriver...")
download_url = latest_version['url'] + download_finename
file = requests.get(download_url)
with open("chromedriver_mac64.zip", 'wb') as zip_file: # 保存文件到脚本所在目录
zip_file.write(file.content)
print("下载完成.")
# 解压
f = zipfile.ZipFile(download_finename, 'r')
for file in f.namelist():
#f.extract(file)
'''解压Chromedriver压缩包到指定目录'''
f.extract(file, chromeWebdrivrPath) # ChromeWebdrivrPath指定的是要替换的webderiver地址
print("解压完成.")
version = getChromeDriverVersion()
getLatestChromeDriver(version)