|
按照不同的情況,python下載文件可以分為三種:
python 小文件下載流程:使用request.get請求鏈接,返回的內(nèi)容放置到變量r中,然后將r寫入到你想放的地方。 ![]() 以下載上述流程圖為例子: ![]() 運(yùn)行完畢后,它將會被保存到當(dāng)前文件夾的new文件夾里。 python 大文件下載我們在小文件下載的時(shí)候,是將文件內(nèi)容暫存到變量里,大家想想,下載大文件的時(shí)候還這樣做會有什么問題 流式分塊下載原理:一塊一塊地將內(nèi)存寫入到文件中,以避免內(nèi)存占用過大。 ![]() 當(dāng)設(shè)置了request.get(stream=True)的時(shí)候,就是啟動流模式下載,典型特征:在r變量的content被調(diào)用的時(shí)候才會啟動下載。代碼如下: ![]() Python 批量文件下載所謂批量下載,當(dāng)然不是一個(gè)一個(gè)文件的下載了,比如說我們要下載百度圖片,如果一個(gè)一個(gè)下載會出現(xiàn)兩種負(fù)面情況:
我們的解決方案是使用異步策略。如果你會用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è)圖片的代碼如下: ![]() 注意: img = await session.get(url) 我們的文章到此就結(jié)束啦,如果你希望我們今天的Python 教程,請持續(xù)關(guān)注我們,如果對你有幫助,麻煩在下面點(diǎn)一個(gè)贊/在看哦 |
|
|