(爬)批量下載unsplash高解析圖片

批量下載unsplash高解析圖片 

目標網頁:unsplash

1.首先觀察一下網頁的型態

a.可以發現到一直往下拉會不斷的出現圖片,再來打開"檢查"=>"Network"
會發現每捲動20張自動加載到下一頁。

b.再按到"Preview",可以發現它的每頁20圖片的連結,接下來就可以寫程式

2.改成解析並改成json格式截取須要的圖片網址

import requests, os
from bs4 import BeautifulSoup

serchName=input("請輸入想搜尋的類別名稱: ")
page=input("請輸入想下載頁數的範圍: ")
url=f'https://unsplash.com/napi/search/photos?query={serchName}&'+\
    f'xp=feedback-loop-v2%3Acontrol&per_page=20&page={page+str(1)}'
html=requests.get(url).json()['results']
for i in html:
    link=i['urls']['raw']
    print(link)

3.下載圖片

def downloadsImgs(imgUrlsavePath):
    #檢查有無資料夾,沒有則建立資料夾
    if not os.path.exists(savePath):
        os.mkdir(savePath)

    num=0
    for j in imgUrl:
        picUrl=j+'.jpg'
        print(picUrl)
        pics=requests.get(picUrl)
        pics.raise_for_status()
        print("%s遠端連線下載成功...."%pics)
        #不使用os.path.basename截取圖片名是因為寫入時發生錯誤,所以改用編號
        with open(os.path.join(savePath, str(num)+'.jpg'), 'wb'as f:
            for d in pics.iter_content(10240):
                f.write(d)
        num+=1
        f.close()

完整程式碼

因為是高解析度,下載一張可能因網速有所不同,會稍慢些

import requests, os

serchName=input("請輸入想搜尋的類別名稱: ")
page=input("請輸入想下載頁數的範圍: ")
savePath=r'D:\暫\test'

def downloadsImgs(imgUrlsavePath):
    #檢查有無資料夾,沒有則建立資料夾
    if not os.path.exists(savePath):
        os.mkdir(savePath)

    num=0
    for j in imgUrl:
        picUrl=j+'.jpg'
        print(picUrl)
        pics=requests.get(picUrl)
        pics.raise_for_status()
        print("%s遠端連線下載成功...."%pics)
        #不使用os.path.basename截取圖片名是因為寫入時發生錯誤,所以改用編號
        with open(os.path.join(savePath, str(num)+'.jpg'), 'wb'as f:
            for d in pics.iter_content(10240):
                f.write(d)
        num+=1
        f.close()
    

imgUrl=[]
url=f'https://unsplash.com/napi/search/photos?query={serchName}&'+\
    f'xp=feedback-loop-v2%3Acontrol&per_page=20&page={page+str(1)}'
html=requests.get(url).json()['results']
for i in html:
    link=i['urls']['raw']
    if link in imgUrl:
        continue
    else:
        imgUrl.append(link)
    #print(imgUrl)

    downloadsImgs(imgUrl, savePath)



留言

這個網誌中的熱門文章

(爬)微信公眾號上的圖片下載

(爬)康是美門市查詢並轉存csv