利用Python批量下載高清壁紙
注:本文內(nèi)容僅作為編程技術(shù)學(xué)習(xí)討論,相關(guān)代碼和數(shù)據(jù)不可用于商業(yè)用途,否則后果自負(fù)。
代碼:

我們先看一下手動(dòng)下載的過程,注意不是右鍵圖片另存為,右鍵另存的方式獲取的圖片是經(jīng)過一定比例壓縮的,清晰度會(huì)降低很多。以Nature為例,點(diǎn)擊Download free,選擇下載路徑即可。

接下來,分析具體網(wǎng)頁:
首先,我們觀察到網(wǎng)頁底部有頁碼選擇項(xiàng),我們?cè)囍吕W(wǎng)頁滑塊,發(fā)現(xiàn)圖片是動(dòng)態(tài)加載的,也就是是我們下拉網(wǎng)頁時(shí),后續(xù)圖片才陸續(xù)顯示。

我們把幾個(gè)url拿出來看一下:

以上鏈接只有page參數(shù)不同,而且是依次遞增的,還算是比較友好,請(qǐng)求時(shí)依次遍歷就可以了。
頁碼的問題已經(jīng)解決,接下來分析每張圖片的鏈接:

import?time
import?random
import?json
import?requests
from?fake_useragent?import?UserAgent
time:定時(shí) random:生成隨機(jī)數(shù)
json:處理json格式數(shù)據(jù)
requests:網(wǎng)頁請(qǐng)求
fake_useragent:偽裝瀏覽器信息
ua?= UserAgent(verify_ssl=False)
headers?= {'User-Agent': ua.random}
def getpicurls(i,headers):
????picurls = []
????url =?'https://unsplash.com/napi/search/photos?query=nature&per_page=20&page={}&xp=feedback-loop-v2%3Aexperiment'.format(i)
????r = requests.get(url, headers=headers, timeout=5)
????time.sleep(random.uniform(3.1,?4.5))
????r.raise_for_status()
????r.encoding = r.apparent_encoding
????allinfo = json.loads(r.text)
????results = allinfo['results']
????for?result in results:
????????href = result['urls']['full']
????????picurls.append(href)
????return?picurls
def getpic(count,url):
????r = requests.get(url, headers=headers, timeout=5)
????with?open('pictures/{}.jpg'.format(count),?'wb')?as?f:
????????f.write(r.content)


關(guān)于如何將代碼打包成EXE可執(zhí)行文件,可參考之前的文章:將打飛機(jī)游戲打包成 exe
注意:
盡量不要頻繁的爬取,以免影響網(wǎng)絡(luò)秩序!同時(shí)也增加被封屏蔽的風(fēng)險(xiǎn)
圖片為外網(wǎng)高清圖片,爬取速度和網(wǎng)絡(luò)有關(guān),一般不會(huì)太快。
可以構(gòu)建代理池爬取,速度更快。
主要功能代碼已在文中給出。如需獲取配套exe可執(zhí)行工具,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)關(guān)鍵字:壁紙
作者:歐King
_往期文章推薦_
