Unsplash 是一個免費高品質照片的網站,都是真實的攝影照片,照片解析度也很大,對設計師朋友來說是非常好的素材,對一些插畫類文案寫作的朋友也非常實用,當壁紙效果也很不錯。對應功能代碼封已封裝成exe工具,希望對你有幫助,
文末附有程式碼 工具取得方式。
#程式碼:
我們先來看看手動下載的過程,注意不是右鍵圖片另存為,右鍵另存的方式取得的圖片是經過一定比例壓縮的,清晰度會降低很多。 以Nature為例,點選Download free,選擇下載路徑即可,圖片大小1.43M。
透過幾次操作,發現當下拉時,網頁會發出以下幾個請求,點開其中一個,可以看到圖片總數量:10000,總頁數:500。
我們把幾個url拿出來看看:
以上連結只有page參數不同,而且是依序遞增的,還算是比較友好,請求時依次遍歷就可以了。
頁碼的問題已經解決,接下來分析每張圖片的連結:
import time import random import json import requests from fake_useragent import UserAgent
##random:產生隨機數字
json:處理json格式資料
######### ############requests:網頁請求#########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)
#盡量不要頻繁的爬取,以免影響網路秩序!
圖片為外網高清圖片,爬取速度和網路有關,一般不會太快。
可以建立代理程式池爬取,速度更快。
以上是爬蟲 | 高畫質桌布大量下載(內附原始碼+工具)的詳細內容。更多資訊請關注PHP中文網其他相關文章!