轉自:帥b大佬
---恢復內容開始---
一般情況下我們使用爬蟲更多的應該是爬數據或者圖片吧,今天在這里和大家分享一下關於使用爬蟲技術來進行視頻下載的方法,不僅可以方便的下載一些體積小的視頻,針對大容量的視頻下載同樣試用。
先上個🌰
requests模塊的iter_content方法
這里我們使用的是python的requests模塊作為例子,需要獲取文本的時候我們會使用response.text獲取文本信息,使用response.content獲取字節流,比如下載圖片保存到一個文件,而對於大個的文件我們就要采取分塊讀取的方式了,
requests.get方法的stream
第一步,我們需要設置requests.get的stream參數為True。
默認情況下是stream的值為false,它會立即開始下載文件並存放到內存當中,倘若文件過大就會導致內存不足的情況.
當把get函數的stream參數設置成True時,它不會立即開始下載,當你使用iter_content或iter_lines遍歷內容或訪問內容屬性時才開始下載。需要注意一點:文件沒有下載之前,它也需要保持連接。
下面我們開始解讀標有注釋的代碼:
tqdm是一個可以顯示進度條的包,具體的用法可以參考官網文檔:https://pypi.org/project/tqdm/
(1)設置stream=True參數讀取大文件。
(2)通過header的content-length屬性可以獲取文件的總容量。
(3)獲取本地已經下載的部分文件的容量,方便繼續下載,當然需要判斷文件是否存在,如果不存在就從頭開始下載。
(4)本地已下載文件的總容量和網絡文件的實際容量進行比較,如果大於或者等於則表示已經下載完成,否則繼續。
(5)開始請求視頻文件了
(6)循環讀取每次讀取一個1024個字節,當然你也可以設置512個字節
---恢復內容結束---