亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python一招完美搞定Chromedriver的自動(dòng)更新問(wèn)題

 更新時(shí)間:2022年09月16日 08:20:16   作者:NewJune  
這篇文章主要介紹了python一招完美搞定Chromedriver的自動(dòng)更新,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

  日常的web自動(dòng)化過(guò)程中,我們常常用python selenium庫(kù)來(lái)操縱Chrome瀏覽器實(shí)現(xiàn)網(wǎng)頁(yè)的自動(dòng)化。這其中有個(gè)比較頭疼的問(wèn)題:Chrome的更新頻率非常頻繁,與之對(duì)應(yīng)的Chromedriver版本也必須相應(yīng)更新。如果兩者版本的主版本號(hào)相差超過(guò)1,selenium則會(huì)報(bào)異常,大概錯(cuò)誤信息如下:

發(fā)生異常: SessionNotCreatedException

Message: session not created: This version of ChromeDriver only supports Chrome version 95 Current browser version is 105.0.5195.102 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

  那有沒(méi)有好的辦法解決這個(gè)問(wèn)題呢?方法當(dāng)然有,首先我們需要知道哪里可以下載到不同版本的Chromedriver文件。這里推薦兩個(gè)網(wǎng)站,國(guó)內(nèi)首選chromedriver淘寶的鏡像倉(cāng)庫(kù):http://npm.taobao.org/mirrors/chromedriver/。其訪問(wèn)和下載速度很快,僅有如下幾個(gè)缺點(diǎn):

1、數(shù)據(jù)更新會(huì)比谷歌官方稍慢;

2、可供下載的版本有時(shí)不全;

3、網(wǎng)站域名和界面有時(shí)會(huì)變化,這間接影響到了自動(dòng)下載的方法。

其網(wǎng)站界面如下:

  如果希望穩(wěn)定獲取對(duì)應(yīng)版本的chromedriver,這里更加推薦谷歌官方的源倉(cāng)庫(kù)(莫慌張,該域名在國(guó)內(nèi)可以正常訪問(wèn)),網(wǎng)址為:https://chromedriver.storage.googleapis.com/index.html。界面與淘寶鏡像倉(cāng)庫(kù)的別無(wú)二致:

  那么問(wèn)題來(lái)了,如何讓python腳本自動(dòng)幫我們下載和更新chromedriver,使其與chrome瀏覽器版本相一致呢?這就體現(xiàn)出python第三方庫(kù)遍地開(kāi)花的優(yōu)勢(shì)了。webdriver-manager庫(kù),沒(méi)錯(cuò),我們只需要通過(guò)pip installwebdriver-manager來(lái)安裝該三方庫(kù)。通過(guò)庫(kù)名也不難看出,該工具可以有效管理主流瀏覽器所需的webdriver:chrome、Edge、chromium、firefox、IE、Opera的支持都不在話下。本文以chrome來(lái)舉例。

假設(shè)我們Chrome總是自動(dòng)更新至最新版,我們自然每次使用selenium前需要確保chromedriver處于最新版(latest_release),此時(shí)我們只需要寥寥幾行代碼即可搞定:

# selenium 4
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
driver_path=ChromeDriverManager().install() #下載latest release版本的chromedriver,并返回其在本機(jī)的下載存儲(chǔ)路徑
driver = webdriver.Chrome(service=Service(driver_path)) 

  有了這段腳本webdriver-manager會(huì)灰常貼心地自動(dòng)檢查本地緩存路徑,確認(rèn)有無(wú)該版本的chromedriver,如果確認(rèn)沒(méi)有,它才會(huì)聯(lián)網(wǎng)下載最新版本的chromedriver,控制臺(tái)中還會(huì)顯示下載速度和進(jìn)度,極其用心。如果我們覺(jué)得webdriver的日志多余,官方也提供了方法供我們關(guān)閉相關(guān)日志,代碼如下:

import logging
import os

os.environ['WDM_LOG'] = str(logging.NOTSET)

  我們還可以方便地指定chromedriver的本地下載和保存路徑,它既可以支持相對(duì)路徑,也可以支持絕對(duì)路徑的寫(xiě)法,代碼示例如下:

from webdriver_manager.chrome import ChromeDriverManager
ChromeDriverManager(path = r".\\Drivers").install()

  如果我們希望下載指定版本的chromedriver,可以給上面的ChromeDriverManager實(shí)例傳入version參數(shù),代碼示例如下:

from webdriver_manager.chrome import ChromeDriverManager

ChromeDriverManager(version="106.0.5249.21").install()

  這里引出了真正的問(wèn)題,假使我們本機(jī)上使用的chrome不是最新版,我們又該如何去實(shí)現(xiàn)自動(dòng)更新chromedriver呢?這就是小爬在本文中要重點(diǎn)解決的問(wèn)題:

細(xì)細(xì)思考后不難看出,我們只需要分以下幾個(gè)步驟來(lái)實(shí)現(xiàn):

1、自動(dòng)獲取當(dāng)前電腦的chrome瀏覽器版本;

2、提取瀏覽器版本的主版本號(hào),如chrome版本為106.0.5249.21,那么其主版本號(hào)就是”106“;

3、利用requests庫(kù)請(qǐng)求chromedriver的鏡像倉(cāng)庫(kù),解析返回的html源碼,獲得每個(gè)版本的chromedriver鏈接;

4、從步驟3獲得的所有下載鏈接中,找到主版本與chrome一致的,從中隨意取出一個(gè)即可滿足要求(我們不妨取出第一個(gè)滿足要求的chromedriver版本);

5、將該版本號(hào)傳入ChromeDriverManager實(shí)例,即可下載使用對(duì)應(yīng)的chromedriver。

  小爬直接帶著各位童鞋開(kāi)整啦,下面全是干貨。示例代碼如下:

from webdriver_manager.core.utils import get_browser_version_from_os

from webdriver_manager.chrome import ChromeDriverManager
import requests,re,time,os

browserVersion=get_browser_version_from_os("google-chrome") # 獲取當(dāng)前系統(tǒng)chrome瀏覽器的版本號(hào)
mainBrowserVersion=browserVersion.split(".")[0] # 獲取瀏覽器的主版本號(hào)
resp=requests.get(url="https://chromedriver.storage.googleapis.com/")
content=resp.text
availableVersionList=re.search(f"<Contents><Key>({mainBrowserVersion}\.\d+\.\d+\.\d+)/chromedriver_win32\.zip</Key>.*?",content,re.S)
if availableVersionList==None:
    print(f"鏡像網(wǎng)站上沒(méi)有找到主版本號(hào)為{mainBrowserVersion}的chromedriver文件,請(qǐng)核實(shí)!")
    time.sleep(10)
    os._exit(0)
else:
    availableVersion=availableVersionList.group(1)
driver_path=ChromeDriverManager(version=availableVersion).install() # 找到鏡像網(wǎng)站中主版本號(hào)與chrome主版本一致的,將匹配到的第一個(gè)完整版本號(hào)的chromedriver下載使用

  有了這段代碼,chromedriver與chrome版本同步的問(wèn)題,就再也不會(huì)困擾屏幕前的你了!(●'?'●)

到此這篇關(guān)于python一招完美搞定Chromedriver的自動(dòng)更新的文章就介紹到這了,更多相關(guān)python Chromedriver自動(dòng)更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python+opencv實(shí)現(xiàn)車牌定位功能(實(shí)例代碼)

    python+opencv實(shí)現(xiàn)車牌定位功能(實(shí)例代碼)

    這篇文章主要介紹了python+opencv實(shí)現(xiàn)車牌定位功能,需要實(shí)現(xiàn)對(duì)給定的車牌進(jìn)行車牌識(shí)別,本文通過(guò)實(shí)例代碼講解,需要的朋友可以參考下
    2019-12-12
  • python判斷是空的實(shí)例分享

    python判斷是空的實(shí)例分享

    在本篇內(nèi)容里小編給大家整理的是關(guān)于python怎么判斷是空的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2020-07-07
  • python人工智能tensorflow函數(shù)np.random模塊使用

    python人工智能tensorflow函數(shù)np.random模塊使用

    這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)np.random模塊使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python format函數(shù)詳談

    Python format函數(shù)詳談

    這篇文章主要介紹了Python中用format函數(shù)格式化字符串的用法,格式化字符串是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),希望能夠給你帶來(lái)幫助
    2021-10-10
  • Python7個(gè)爬蟲(chóng)小案例詳解(附源碼)下篇

    Python7個(gè)爬蟲(chóng)小案例詳解(附源碼)下篇

    這篇文章主要介紹了Python7個(gè)爬蟲(chóng)小案例詳解(附源碼)上篇,本文章內(nèi)容詳細(xì),通過(guò)案例可以更好的理解爬蟲(chóng)的相關(guān)知識(shí),七個(gè)例子分為了三部分,本次為下篇,共有三道題,需要的朋友可以參考下
    2023-01-01
  • Python偏函數(shù)Partial function使用方法實(shí)例詳解

    Python偏函數(shù)Partial function使用方法實(shí)例詳解

    這篇文章主要介紹了Python偏函數(shù)Partial function使用方法實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 基于Python編寫(xiě)簡(jiǎn)易文字語(yǔ)音轉(zhuǎn)換器

    基于Python編寫(xiě)簡(jiǎn)易文字語(yǔ)音轉(zhuǎn)換器

    這篇文章主要為大家介紹了如何利用Python編寫(xiě)一個(gè)簡(jiǎn)易文字語(yǔ)音轉(zhuǎn)換器,并打包成exe。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起嘗試一下
    2022-03-03
  • 在Python的setuptools框架下生成egg的教程

    在Python的setuptools框架下生成egg的教程

    這篇文章主要介紹了在Python的setuptools框架下生成egg的教程,本文來(lái)自于IBM官方開(kāi)發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • python爬取NUS-WIDE數(shù)據(jù)庫(kù)圖片

    python爬取NUS-WIDE數(shù)據(jù)庫(kù)圖片

    本文給大家分享的是使用Python制作爬蟲(chóng)爬取圖片的小程序,非常的簡(jiǎn)單,但是很實(shí)用,有需要的小伙伴可以參考下
    2016-10-10
  • Python中切片的詳細(xì)操作篇

    Python中切片的詳細(xì)操作篇

    在Python中切片(slice)是對(duì)序列型對(duì)象(如list, string, tuple)的一種高級(jí)索引方法,下面這篇文章主要給大家介紹了關(guān)于Python中切片操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評(píng)論