国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium根據(jù)Chrome瀏覽器版本自動(dòng)下載/更新驅(qū)動(dòng)chromedriver.exe

這篇具有很好參考價(jià)值的文章主要介紹了Selenium根據(jù)Chrome瀏覽器版本自動(dòng)下載/更新驅(qū)動(dòng)chromedriver.exe。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

個(gè)人經(jīng)常使用到selenium來(lái)控制瀏覽器進(jìn)行相關(guān)的操作,但是Chrome瀏覽器經(jīng)常會(huì)自動(dòng)更新,導(dǎo)致已有的驅(qū)動(dòng)程序chromedriver.exe失效,需要重新下載。

以前嘗試過(guò)禁止Chrome瀏覽器更新,但是這并不是很好的解決方案。

于是換了個(gè)方向,既然Chrome瀏覽器會(huì)自動(dòng)更新,那么在我使用selenium控制瀏覽器時(shí),也進(jìn)行自動(dòng)更新驅(qū)動(dòng)程序。

官方下載速度太慢,這里使用的是淘寶NPM鏡像地址:CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?path=chromedriver/

首先通過(guò)selenium嘗試啟動(dòng)Chrome瀏覽器,如果異常再做對(duì)應(yīng)的處理,就當(dāng)前項(xiàng)目主要有兩個(gè)異常:

  1. 驅(qū)動(dòng)文件不存在:

    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

  2. 驅(qū)動(dòng)文件與當(dāng)前瀏覽器不兼容:

    selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 101 Current browser version is 113.0.5672.64 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe

然后根據(jù)對(duì)應(yīng)的異常捕獲本地已安裝的Chrome瀏覽器的版本,然后進(jìn)行下載/更新

Selenium根據(jù)Chrome瀏覽器版本自動(dòng)下載/更新驅(qū)動(dòng)chromedriver.exe

驅(qū)動(dòng)程序chromedriver.exe版本號(hào)一般為4個(gè)字段(113.0.5672.24),使用正則匹配前3個(gè)字段,最后一位使用最小的版本號(hào)

Selenium根據(jù)Chrome瀏覽器版本自動(dòng)下載/更新驅(qū)動(dòng)chromedriver.exe

?最后拼接對(duì)應(yīng)版本號(hào)驅(qū)動(dòng)程序的下載鏈接,下載并解壓驅(qū)動(dòng)文件,完成自動(dòng)下載/更新操作。

Selenium根據(jù)Chrome瀏覽器版本自動(dòng)下載/更新驅(qū)動(dòng)chromedriver.exe

?完整代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-487901.html

import os
import re
import sys
import winreg
import requests
from zipfile import ZipFile
from selenium import webdriver
from selenium.common.exceptions import WebDriverException, SessionNotCreatedException


def download_webdriver(driver_version):
    """
    下載更新驅(qū)動(dòng)\n
    驅(qū)動(dòng)下載網(wǎng)址:https://registry.npmmirror.com/binary.html?path=chromedriver/
    """
    # 獲取驅(qū)動(dòng)列表
    version_list = requests.get("https://registry.npmmirror.com/-/binary/chromedriver/").json()
    version_list = [version["name"] for version in version_list]
    # 獲取符合的驅(qū)動(dòng)版本號(hào)
    target_version = driver_version.rsplit(".", 1)[0]  # 112.0.5615.28 >>> 112.0.5615
    for version in version_list:
        result = re.match(f"{target_version}.\d+", version)
        if result != None:
            target_version = result.group(0)
    print(f"目標(biāo)驅(qū)動(dòng)程序版本: {target_version}")
    # 下載驅(qū)動(dòng)壓縮包
    download_url = f"https://cdn.npmmirror.com/binaries/chromedriver/{target_version}/chromedriver_win32.zip"
    res = requests.get(download_url, stream=True)
    file_size = int(res.headers.get('Content-Length'))  # 獲取文件總大小(字節(jié))
    file_size_MB = file_size / 1024 / 1024
    with open('./chromedriver_win32.zip', 'wb') as fwb:
        n = 1
        for chunk in res.iter_content(int(file_size / 10) + 1):   # 每次遍歷的塊大小
            fwb.write(chunk)
            schedule = "████" * n + "    " * (10 - n)
            print(f"進(jìn)度: {10*n}% |{schedule}| {(file_size_MB/10)*n:.2f}MB/{file_size_MB:.2f}MB", end='\r')
            n += 1
    # 解壓驅(qū)動(dòng)壓縮包
    with ZipFile("./chromedriver_win32.zip") as file:
        file.extract("chromedriver.exe", ".")
    os.remove("./chromedriver_win32.zip")
    print("\n下載/更新完成!")


def create_webdriver(options=None):
    """
    判斷瀏覽器驅(qū)動(dòng)是否正常\n
    return:瀏覽器驅(qū)動(dòng)對(duì)象
    """
    while True:
        try:    # 判斷驅(qū)動(dòng)是否正常
            driver = webdriver.Chrome(options=options)
            return driver
        except SessionNotCreatedException as msg:   # 驅(qū)動(dòng)與瀏覽器版本不一致
            driver_version = re.search("Chrome version (\d+)", str(msg)).group(1)
            chrome_version = re.search("Current browser version is ([\d.]+) with", str(msg)).group(1)
            print(f"SessionNotCreatedException: 瀏覽器版本與驅(qū)動(dòng)程序不兼容,瀏覽器({chrome_version}),當(dāng)前驅(qū)動(dòng)程序({driver_version})\n正在更新驅(qū)動(dòng)程序...")
            download_webdriver(chrome_version)
        except WebDriverException as msg:   # 缺少驅(qū)動(dòng)文件
            # 獲取本機(jī)Chrome瀏覽器的版本
            key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome')
            chrome_version = winreg.QueryValueEx(key, 'DisplayVersion')[0]    # Version
            print(f"WebDriverException: 缺少瀏覽器對(duì)應(yīng)的驅(qū)動(dòng)程序,瀏覽器({chrome_version})\n正在下載驅(qū)動(dòng)程序...")
            download_webdriver(chrome_version)
        except Exception as msg:
            print(msg)
            sys.exit(1)


if __name__ == "__main__":
    options = webdriver.ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-logging'])

    driver = create_webdriver(options)
    print(111)
    driver.quit()

到了這里,關(guān)于Selenium根據(jù)Chrome瀏覽器版本自動(dòng)下載/更新驅(qū)動(dòng)chromedriver.exe的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解決selenium打開Chrome瀏覽器自動(dòng)退出的問(wèn)題

    解決selenium打開Chrome瀏覽器自動(dòng)退出的問(wèn)題

    好不容易安裝好selenium和對(duì)應(yīng)的瀏覽器驅(qū)動(dòng)器后終于可以運(yùn)行程序了,結(jié)果發(fā)現(xiàn)一運(yùn)行程序后瀏覽器打開就自動(dòng)退出了,但是我在Python代碼中并沒(méi)有寫driver.quit()方法,上網(wǎng)查了查發(fā)現(xiàn)原來(lái)是我的selenium版本是4.8.2的,selenium升級(jí)到版本4.7.2后,會(huì)出現(xiàn)這個(gè)瀏覽器自動(dòng)退出的問(wèn)題

    2024年02月11日
    瀏覽(104)
  • Python selenium自動(dòng)化操作Chrome瀏覽器

    Python selenium自動(dòng)化操作Chrome瀏覽器

    ? ? 活動(dòng)地址:CSDN21天學(xué)習(xí)挑戰(zhàn)賽 Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持目前比較主流的瀏覽器。它也實(shí)現(xiàn)了諸多自動(dòng)化功能,比如軟件自動(dòng)化測(cè)試,檢測(cè)軟件與瀏覽器兼容性,自動(dòng)錄制、生成不同語(yǔ)言

    2024年02月02日
    瀏覽(94)
  • 使用Selenium控制Chrome瀏覽器 --工作自動(dòng)化

    使用Selenium控制Chrome瀏覽器 --工作自動(dòng)化

    使用Selenium控制Chrome瀏覽器 --工作自動(dòng)化 最近朋友在用秒賬做帳時(shí),由于銷售單量很大,重復(fù)錄入工作一天一錄就近五個(gè)小時(shí),尋求幫助,問(wèn)能不能把這重復(fù)勞動(dòng)減少些,看后分析,使用web自動(dòng)化,應(yīng)能解決問(wèn)題,特此記錄如下: ?Selenium 簡(jiǎn)介:Selenium 是一套完整的web應(yīng)用程

    2024年02月01日
    瀏覽(87)
  • 使用selenium,但chrome無(wú)法啟動(dòng),需要安裝瀏覽器對(duì)應(yīng)版本(最新)的chromedriver

    使用selenium,但chrome無(wú)法啟動(dòng),需要安裝瀏覽器對(duì)應(yīng)版本(最新)的chromedriver

    使用selenium無(wú)法啟動(dòng)chrome,代碼 報(bào)錯(cuò)如下: 安裝地址 查詢了瀏覽器版本:117.0.5927 但是國(guó)內(nèi)的鏡像網(wǎng)找不到,只更新到114版本 需要安裝驅(qū)動(dòng),點(diǎn)擊了最下面的網(wǎng)址 https://chromedriver.chromium.org/home 如圖為有效信息 - 點(diǎn)擊跳轉(zhuǎn): https://googlechromelabs.github.io/chrome-for-testing (點(diǎn)擊這里

    2024年02月11日
    瀏覽(97)
  • chrome.exe版本不對(duì)selenium進(jìn)行爬蟲時(shí)無(wú)法啟動(dòng)谷歌瀏覽器

    chrome.exe版本不對(duì)selenium進(jìn)行爬蟲時(shí)無(wú)法啟動(dòng)谷歌瀏覽器

    問(wèn)題描述:由于谷歌瀏覽器升級(jí),導(dǎo)致谷歌驅(qū)動(dòng)chrome.exe版本不對(duì),使用selenium進(jìn)行爬蟲時(shí)無(wú)法啟動(dòng)谷歌瀏覽器。 ?解決方法:1. 在谷歌瀏覽器的設(shè)置下,查看瀏覽器的Chrome版本號(hào)。 ?2. 進(jìn)入CNPM Binaries Mirror網(wǎng)頁(yè),下載對(duì)應(yīng)版本的谷歌驅(qū)動(dòng)器。本文的瀏覽器是103.0.5060.53,故下載

    2024年02月12日
    瀏覽(86)
  • Python+Selenium程序執(zhí)行完,chrome瀏覽器自動(dòng)關(guān)閉解決方案

    因?yàn)榘裠river = webdriver.Chrome()放在了函數(shù)內(nèi)部,在函數(shù)執(zhí)行完畢之后,程序內(nèi)所有的步驟都結(jié)束了,關(guān)于這段程序的進(jìn)程也就結(jié)束了,瀏覽器包含在內(nèi),所以才會(huì)自動(dòng)退出。 設(shè)置全局變量,即把打開瀏覽器的操作放在函數(shù)外部,函數(shù)執(zhí)行完畢,瀏覽器就不會(huì)關(guān)閉 關(guān)閉瀏覽器代

    2024年02月16日
    瀏覽(98)
  • java + Selenium 實(shí)現(xiàn)自動(dòng)化測(cè)試,模擬人手點(diǎn)擊操作 chrome 瀏覽器

    引入 maven 依賴: 安裝 chromeDriver:略 SeleniumUtils.java: ChromeDriverUtils.java: 使用示例:

    2024年02月11日
    瀏覽(25)
  • chrome瀏覽器版本和Chromedriver不匹配問(wèn)題解決辦法selenium.common.exceptions.SessionNotCreatedException

    chrome瀏覽器版本和Chromedriver不匹配問(wèn)題解決辦法selenium.common.exceptions.SessionNotCreatedException

    執(zhí)行selenium抓取的時(shí)候,報(bào)下面錯(cuò)誤: 這是因?yàn)闉g覽器的版本和Chromedriver的版本不匹配,Chrome瀏覽器如果沒(méi)有關(guān)閉自動(dòng)更新,會(huì)一直出現(xiàn)這個(gè)問(wèn)題,比較麻煩,建議關(guān)閉Chrome瀏覽器自動(dòng)更新,參照另外一篇文章:Chrome瀏覽器關(guān)閉自動(dòng)更新 谷歌鏡像版本下載鏈接:https://regist

    2024年02月16日
    瀏覽(25)
  • Selenium4.6版本瀏覽器自動(dòng)退出問(wèn)題

    打開百度后chrome瀏覽器就關(guān)閉掉了 代碼的控制臺(tái)并無(wú)任何報(bào)錯(cuò) 正常應(yīng)該保留的 python 3.10.8 pycharm 2021.2.3 chrome 107.0.5304.122 chromedriver 107.0.5304.18 selenium 4.6.1 這個(gè)問(wèn)題在之前的版本中幾乎沒(méi)遇到過(guò),這一期的學(xué)員很多都反饋有該問(wèn)題,推測(cè)應(yīng)該是新版本導(dǎo)致的 python 沒(méi)有變化,排除

    2024年02月02日
    瀏覽(39)
  • selenium4.15.2 報(bào)錯(cuò)Exception managing chrome: error sending request for url 和 打開Chrome瀏覽器自動(dòng)退出問(wèn)題

    最近更新了一不小心更新了selenium4.15.2,導(dǎo)致每次運(yùn)行它都會(huì)主動(dòng)去國(guó)外官網(wǎng)請(qǐng)求一遍,因?yàn)樵L問(wèn)不了國(guó)外網(wǎng)址,就加載特別慢 最后報(bào)錯(cuò) Exception managing chrome: error sending request for url (https://chromedriver.storage.googleapis.com/index.html),然后再運(yùn)行,一開始以為是webdriver版本和chrome版本

    2024年02月05日
    瀏覽(172)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包