在 Python 中自动下载适合 Selenium 的 chromedriver

不幸的是,Chromedriver 总是特定于您安装的 Chrome 版本。因此,当您通过 PyInstaller 将 python 代码和 chromedriver 打包到 Windows 的可部署 .exe 文件中时,它在大多数情况下都不起作用,因为您将无法在 .exe 文件中拥有所有 chromedriver 版本。

任何人都知道如何从网站自动下载正确的 chromedriver 的方法?

如果没有,我会想出一个代码来下载 zip 文件并将其解压缩到临时文件。

谢谢!


慕田峪4524236
浏览 325回答 5
5回答

胡说叔叔

这是另一个解决方案,webdriver_manager不支持。此脚本将下载最新的 chrome 驱动程序版本。import requestsimport wgetimport zipfileimport os# get the latest chrome driver version numberurl = 'https://chromedriver.storage.googleapis.com/LATEST_RELEASE'response = requests.get(url)version_number = response.text# build the donwload urldownload_url = "https://chromedriver.storage.googleapis.com/" + version_number +"/chromedriver_win32.zip"# download the zip file using the url built abovelatest_driver_zip = wget.download(download_url,'chromedriver.zip')# extract the zip filewith zipfile.ZipFile(latest_driver_zip, 'r') as zip_ref:    zip_ref.extractall() # you can specify the destination folder path here# delete the zip file downloaded aboveos.remove(latest_driver_zip)

倚天杖

这是 Python 的另一种方法 -import chromedriver_autoinstallerfrom selenium import webdriveropt = webdriver.ChromeOptions()opt.add_argument("--start-maximized")chromedriver_autoinstaller.install()driver = webdriver.Chrome(options=opt)driver.get('https://stackoverflow.com/')这里有更多信息https://pypi.org/project/chromedriver-autoinstaller/

猛跑小猪

Webdriver Manager 会为你做这件事。请参考此链接https://pypi.org/project/webdriver-manager/

饮歌长啸

我有一个稍微漂亮一点的版本它会检测到你的 chrome 版本,获取正确的驱动程序def download_chromedriver():    def get_latestversion(version):        url = 'https://chromedriver.storage.googleapis.com/LATEST_RELEASE_' + str(version)        response = requests.get(url)        version_number = response.text        return version_number    def download(download_url, driver_binaryname, target_name):        # download the zip file using the url built above        latest_driver_zip = wget.download(download_url, out='./temp/chromedriver.zip')        # extract the zip file        with zipfile.ZipFile(latest_driver_zip, 'r') as zip_ref:            zip_ref.extractall(path = './temp/') # you can specify the destination folder path here        # delete the zip file downloaded above        os.remove(latest_driver_zip)        os.rename(driver_binaryname, target_name)        os.chmod(target_name, 755)    if os.name == 'nt':        replies = os.popen(r'reg query "HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon" /v version').read()        replies = replies.split('\n')        for reply in replies:            if 'version' in reply:                reply = reply.rstrip()                reply = reply.lstrip()                tokens = re.split(r"\s+", reply)                fullversion = tokens[len(tokens) - 1]                tokens = fullversion.split('.')                version = tokens[0]                break        target_name = './bin/chromedriver-win-' + version + '.exe'        found = os.path.exists(target_name)        if not found:            version_number = get_latestversion(version)            # build the donwload url            download_url = "https://chromedriver.storage.googleapis.com/" + version_number +"/chromedriver_win32.zip"            download(download_url, './temp/chromedriver.exe', target_name)    elif os.name == 'posix':        reply = os.popen(r'chromium --version').read()        if reply != '':            reply = reply.rstrip()            reply = reply.lstrip()            tokens = re.split(r"\s+", reply)            fullversion = tokens[1]            tokens = fullversion.split('.')            version = tokens[0]        else:            reply = os.popen(r'google-chrome --version').read()            reply = reply.rstrip()            reply = reply.lstrip()            tokens = re.split(r"\s+", reply)            fullversion = tokens[2]            tokens = fullversion.split('.')            version = tokens[0]        target_name = './bin/chromedriver-linux-' + version        print('new chrome driver at ' + target_name)        found = os.path.exists(target_name)        if not found:            version_number = get_latestversion(version)            download_url = "https://chromedriver.storage.googleapis.com/" + version_number +"/chromedriver_linux64.zip"            download(download_url, './temp/chromedriver', target_name)  

明月笑刀无情

截至 2021 年 8 月,这是状态:-chromedriver-自动安装程序自动下载并安装支持当前安装的 chrome 版本的 chromedriver。此安装程序支持 Linux、MacOS 和 Windows 操作系统。安装pip install chromedriver-autoinstaller用法Just type import chromedriver_autoinstaller in the module you want to use chromedriver.例子from selenium import webdriverimport chromedriver_autoinstallerchromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists                                      # and if it doesn't exist, download it automatically,                                      # then add chromedriver to pathdriver = webdriver.Chrome()driver.get("http://www.python.org")assert "Python" in driver.title
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python