最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何實現(xiàn)python爬蟲爬取視頻時實現(xiàn)實時進度條顯示

 更新時間:2022年06月21日 14:50:55   作者:knighthood2001  
這篇文章主要介紹了如何實現(xiàn)python爬蟲爬取視頻時實現(xiàn)實時進度條顯示,在爬取并下載網(wǎng)頁上的視頻的時候,我們需要實時進度條,這可以幫助我們更直觀的看到視頻的下載進度。文章圍繞主題展開更多內(nèi)容,需要的小伙伴可以參考一下

前言:

在爬取并下載網(wǎng)頁上的視頻的時候,我們需要實時進度條,這可以幫助我們更直觀的看到視頻的下載進度。

一、全部代碼展示

from contextlib import closing
from requests import get
url = 'https://v26-web.douyinvod.com/57cdd29ee3a718825bf7b1b14d63955b/615d475f/video/tos/cn/tos-cn-ve-15/72c47fb481464cfda3d415b9759aade7/?a=6383&br=2192&bt=2192&cd=0%7C0%7C0&ch=26&cr=0&cs=0&cv=1&dr=0&ds=4&er=&ft=jal9wj--bz7ThWG4S1ct&l=021633499366600fdbddc0200fff0030a92169a000000490f5507&lr=all&mime_type=video_mp4&net=0&pl=0&qs=0&rc=ank7OzU6ZnRkNjMzNGkzM0ApNmY4aGU8MzwzNzo3ZjNpZWdiYXBtcjQwLXNgLS1kLTBzczYtNS0tMmE1Xi82Yy9gLTE6Yw%3D%3D&vl=&vr='
with closing(get(url,  stream=True)) as response:
    chunk_size = 1024  # 單次請求最大值
    # response.headers['content-length']得到的數(shù)據(jù)類型是str而不是int
    content_size = int(response.headers['content-length'])  # 文件總大小
    data_count = 0  # 當(dāng)前已傳輸?shù)拇笮?
    with open('文件名.mp4', "wb") as file:
        for data in response.iter_content(chunk_size=chunk_size):
            file.write(data)
            done_block = int((data_count / content_size) * 50)
            # 已經(jīng)下載的文件大小
            data_count = data_count + len(data)
            # 實時進度條進度
            now_jd = (data_count / content_size) * 100
            # %% 表示%
            print("\r [%s%s] %d%% " % (done_block * '█', ' ' * (50 - 1 - done_block), now_jd), end=" ")

注:上面的url已過期,需要各位自己去找網(wǎng)頁上的視頻url

二、解釋

1.with closing

我們在日常讀取文件資源時,經(jīng)常會用到with open() as f:的句子。

但是使用with語句的時候是需要條件的,任何對象,只要正確實現(xiàn)了上下文管理,就可以使用with語句,實現(xiàn)上下文管理是通過__enter____exit__這兩個方法實現(xiàn)的。

with用法(沒有實現(xiàn)上下文管理)

class Door():
    def open(self):
        print('Door is opened')
    def close(self):
        print('Door is closed')
with Door() as d:
    d.open()
    d.close()

 結(jié)果報錯了:

with用法(實現(xiàn)上下文管理)

用__enter____exit__實現(xiàn)了上下文管理

class Door():
    def open(self):
        print('Door is opened')
    def close(self):
        print('Door is closed')
with Door() as d:
    d.open()
    d.close()

 結(jié)果沒報錯:

closing用法(完美解決上述問題)

一個對象沒有實現(xiàn)上下文,我們就不能把它用于with語句。這個時候,可以用contextlib中的

closing()來把該對象變?yōu)樯舷挛膶ο?/strong>。

class Door():
    def __enter__(self):
        print('Begin')
        return self
 
    def __exit__(self, exc_type, exc_value, traceback):
        if exc_type:
            print('Error')
        else:
            print('End')
    def open(self):
        print('Door is opened')
    def close(self):
        print('Door is closed')
with Door() as d:
    d.open()
    d.close()

例如:用with語句使用requests中的get(url)

也就是本文中的案例,使用with closing()下載視頻(在網(wǎng)頁中)

2.文件流stream

想象一下,如果把文件讀取比作向池子里抽水,同步會阻塞程序,異步會等待結(jié)果,如果池子非常大呢?

因此有了文件流,它就好比你一邊抽一邊取,不用等池子滿了再用,

所以對于一些大型文件(幾個G的視頻)一般會用到這個參數(shù)。(對小型文件也可以使用)

3.response.headers['content-length']

這表示獲取文件的總大小,但是它得到的結(jié)果的數(shù)據(jù)類型是str而不是int,因此需要進行數(shù)據(jù)類型轉(zhuǎn)換。

4.response.iter_content()

該方法一般用于從網(wǎng)上下載文件和網(wǎng)頁(需要用到requests.get(url))

其中chunk_size表示單次請求最大值。

5.\r和%

\r表示回車(回到行首)

%是一種占位符

而對于%%,第一個%起到了轉(zhuǎn)義的作用,使結(jié)果輸出為百分號%

三、結(jié)果展示

四、總結(jié)

我之前看了許多的進度條,這些進度條都能動,但是滿足不了根據(jù)文件內(nèi)容進行加載(里面的參數(shù)要么都定死了,要么就與文件大小無關(guān)),不能做到真正的交互功能,這次的進度條就很好的展示了,大家可以去試試!!

這次下載視頻展示進度條是爭對一個url,大家可以將它加到你的爬蟲的循環(huán)中,這樣就能在爬每個視頻的時候展示實時進度條了?。?/p>

到此這篇關(guān)于如何實現(xiàn)python爬蟲爬取視頻時實現(xiàn)實時進度條顯示的文章就介紹到這了,更多相關(guān)python爬取顯示進度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中計算圓周率的方法匯總(方法合集)

    Python中計算圓周率的方法匯總(方法合集)

    這篇文章主要介紹了Python中計算圓周率的方法匯總(方法合集),包括使用math庫中的pi常量,使用級數(shù)展開公式計算π,本文給大家列舉多種方法幫助大家學(xué)習(xí),需要的朋友可以參考下
    2022-06-06
  • Python中的 Set 與 dict

    Python中的 Set 與 dict

    這篇文章主要介紹了Python中的 Set 與 dict,Set 集合類型有無序 , 自動去重等特點,dict 字典類型 鍵值對存儲的數(shù)據(jù),可獲取,可修改 表面上有序,實際存儲時無序,下面更多詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2022-03-03
  • 解決Django模板無法使用perms變量問題的方法

    解決Django模板無法使用perms變量問題的方法

    這篇文章主要給大家介紹了關(guān)于解決Django模板無法使用perms變量問題的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • 淺談python中的正則表達式(re模塊)

    淺談python中的正則表達式(re模塊)

    本篇文章主要介紹了淺談python中的正則表達式(re模塊),通過內(nèi)嵌集成re模塊,程序媛們可以直接調(diào)用來實現(xiàn)正則匹配,有興趣的可以了解一下
    2017-10-10
  • Python單鏈表簡單實現(xiàn)代碼

    Python單鏈表簡單實現(xiàn)代碼

    這篇文章主要介紹了Python單鏈表簡單實現(xiàn)代碼,結(jié)合實例形式分析了Python單鏈表的具體定義與功能實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • 深入了解Python中描述器的使用

    深入了解Python中描述器的使用

    Python描述器是Python編程語言中的一個重要特性,它提供了一種靈活且強大的機制來控制屬性訪問行為。在本文中,我們將詳細(xì)介紹Python描述器的概念、實現(xiàn)方式以及如何使用Python描述器來增強我們的Python程序
    2023-03-03
  • Python實現(xiàn)圖片和base64轉(zhuǎn)換詳解

    Python實現(xiàn)圖片和base64轉(zhuǎn)換詳解

    這篇文章主要介紹了Python實現(xiàn)圖片和base64轉(zhuǎn)換詳解,Base64是一種二進制到文本的編碼方式,如果要更具體一點的話,可以認(rèn)為它是一種將 byte數(shù)組編碼為字符串的方法,而且編碼出的字符串只包含ASCII基礎(chǔ)字符,需要的朋友可以參考下
    2024-01-01
  • Python三種遍歷文件目錄的方法實例代碼

    Python三種遍歷文件目錄的方法實例代碼

    這篇文章主要介紹了Python三種遍歷文件目錄的方法實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python使用一行代碼獲取上個月是幾月

    Python使用一行代碼獲取上個月是幾月

    本文介紹的關(guān)于Python時間日期處理,日期時間處理在實際應(yīng)用場景中無處不在,所以這也成了編程語言中必不可少的模塊,本文主要給大家介紹Python使用一行代碼獲取上個月是幾月的相關(guān)知識,感興趣的朋友一起看看吧
    2018-08-08
  • Python實現(xiàn)監(jiān)控Nginx配置文件的不同并發(fā)送郵件報警功能示例

    Python實現(xiàn)監(jiān)控Nginx配置文件的不同并發(fā)送郵件報警功能示例

    這篇文章主要介紹了Python實現(xiàn)監(jiān)控Nginx配置文件的不同并發(fā)送郵件報警功能,涉及Python基于difflib模塊的文件比較及smtplib模塊的郵件發(fā)送相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02

最新評論

十堰市| 长垣县| 白沙| 和硕县| 句容市| 宝兴县| 正宁县| 辽宁省| 富裕县| 安宁市| 青阳县| 榆林市| 巩义市| 客服| 汉川市| 陈巴尔虎旗| 汨罗市| 宣汉县| 吴桥县| 长海县| 福安市| 宁明县| 平罗县| 连山| 东海县| 拜泉县| 沧源| 莆田市| 满城县| 望都县| 同仁县| 河池市| 津南区| 叶城县| 新蔡县| 施秉县| 上栗县| 沁源县| 凤台县| 汉阴县| 即墨市|