小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

python 小文件下載、大文件下載、異步批量下載 教程

 Four兄 2019-08-29
 

按照不同的情況,python下載文件可以分為三種:

  1. 小文件下載

  2. 大文件下載

  3. 批量下載

python 小文件下載

流程:使用request.get請求鏈接,返回的內(nèi)容放置到變量r中,然后將r寫入到你想放的地方。

Python小文件下載流程

以下載上述流程圖為例子:

Python文件下載

運(yùn)行完畢后,它將會被保存到當(dāng)前文件夾的new文件夾里。

python 大文件下載

我們在小文件下載的時(shí)候,是將文件內(nèi)容暫存到變量里,大家想想,下載大文件的時(shí)候還這樣做會有什么問題? 很簡單,如果你的內(nèi)存只有8G,結(jié)果要下載文件卻有10G那么大,那就肯定無法下載成功了。而且本機(jī)軟件運(yùn)行占的內(nèi)存也比較大,如果你的內(nèi)存只有8G,實(shí)際上剩余可用的內(nèi)存可能低于2G-4G. 這種情況下怎么下載大文件呢?

流式分塊下載

原理:一塊一塊地將內(nèi)存寫入到文件中,以避免內(nèi)存占用過大。

Python大文件下載流程

當(dāng)設(shè)置了request.get(stream=True)的時(shí)候,就是啟動流模式下載,典型特征:在r變量的content被調(diào)用的時(shí)候才會啟動下載。代碼如下:

python大文件下載

Python 批量文件下載

所謂批量下載,當(dāng)然不是一個(gè)一個(gè)文件的下載了,比如說我們要下載百度圖片,如果一個(gè)一個(gè)下載會出現(xiàn)兩種負(fù)面情況:

  1. 如果某個(gè)請求堵塞,整個(gè)隊(duì)列都會被堵塞

  2. 如果是小文件,單線程下載太慢

我們的解決方案是使用異步策略。如果你會用scrapy框架,那就輕松許多了,因?yàn)樗Y(jié)合了twisted異步驅(qū)動架構(gòu),根本不需要你自己寫異步。不過我們python實(shí)用寶典講的可是教程,還是跟大家說一下怎么實(shí)現(xiàn)異步下載

我們需要使用到兩個(gè)包,一個(gè)是asyncio、一個(gè)是aiohttp. asyncio是Python3的原裝庫,但是aiohttp則需要各位使用cmd/Terminal打開,輸入以下命令安裝:

pip install aiohttp

注意asyncio是單進(jìn)程并發(fā)庫,不是多線程,也不是多進(jìn)程,單純是在一個(gè)進(jìn)程里面異步(切來切去運(yùn)行),切換的地方用await標(biāo)記,能夠切換的函數(shù)用async標(biāo)記。比如下載異步批量下載兩個(gè)圖片的代碼如下:

python異步批量下載

注意: img = await session.get(url)
這時(shí)候,在你請求第一個(gè)圖片獲得數(shù)據(jù)的時(shí)候,它會切換請求第二個(gè)圖片或其他圖片,等第一個(gè)圖片獲得所有數(shù)據(jù)后再切換回來。從而實(shí)現(xiàn)多線程批量下載的功能,速度超快,下載超清大圖用這個(gè)方法可以一秒一張

我們的文章到此就結(jié)束啦,如果你希望我們今天的Python 教程,請持續(xù)關(guān)注我們,如果對你有幫助,麻煩在下面點(diǎn)一個(gè)贊/在看哦有任何問題都可以在下方留言區(qū)留言,我們都會耐心解答的!

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多