以前沒有學習python時,想要下載一個網上的文件,就只能把瀏覽器打來,找到文件的下載鏈接,將地址放進去。
現在學了python後,才發現,原來下載一個東西是十分簡單的。
舉個例子吧。我們來看這張圖片和它的URL。
現在我想要下載這張圖片,其實是一件非常簡單的事,只需要簡單幾行代碼就可以了
曾經我把這個代碼演示給同學看,他說怎麼這麼麻煩,直接右鍵保存不就行了。我反問道,如果讓你下載一千一萬張圖片,你還能手動保存嗎?我們學編程的目的其中之一,就是讓電腦幫我們做煩瑣的事情。
言歸正傳,那麼怎麼寫一個下載器呢?和之前的流程一樣,先獲取URL,然後使用requests模塊下載,然後,把文件保存下來。那麼問題來了,如果我們下載的文件過大,比如我之前用多線程下載過百度網盤上的文件,效果確實很好,一個線程100kb/s,開20個線程,就可以達到2m/s,非常好用,可是遇到一個問題,就是文件過大,如果將數據,現在下載再寫入文件中,對電腦不友好,因爲這是下載的數據會先保存在內存裏,很快內存就不夠用了。
找了很久都沒有找到好的解決方法,怎麼纔可以向下載器一樣邊下載邊寫入文件呢。後再終於找到了解決方法。
只要使用iter_content方法就可一點迭代獲取數據了。
來看完整的代碼
私信下載獲取源碼