<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用Python批量下載高清壁紙

          共 2101字,需瀏覽 5分鐘

           ·

          2022-01-20 00:45

          大家好,歡迎來到 Crossin的編程教室 !
          Unsplash 是一個(gè)免費(fèi)高質(zhì)量照片的網(wǎng)站都是真實(shí)的攝影照片,照片分辨率也很大,對(duì)設(shè)計(jì)師朋友來說是非常好的素材,對(duì)一些插圖類文案寫作的朋友也非常實(shí)用,當(dāng)壁紙效果也很不錯(cuò)。最關(guān)鍵的是,這些圖片可以免費(fèi)商用。
          今天我們就來分享個(gè)小腳本,演示下如何批量下載這些精美圖片。
          相應(yīng)功能代碼已封裝成exe工具,希望對(duì)你有所幫助文末有工具獲取方式

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


          1. 導(dǎo)入模塊

          1.1 導(dǎo)入模塊?

          代碼:

          我們先看一下手動(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ù)顯示。

          通過幾次操作,發(fā)現(xiàn)當(dāng)下拉時(shí),網(wǎng)頁會(huì)發(fā)出如下幾個(gè)請(qǐng)求,點(diǎn)開其中一個(gè),可以看到圖片總數(shù)量:10000,總頁數(shù):500

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

          以上鏈接只有page參數(shù)不同,而且是依次遞增的,還算是比較友好,請(qǐng)求時(shí)依次遍歷就可以了。

          頁碼的問題已經(jīng)解決,接下來分析每張圖片的鏈接

          我們看到result列表長(zhǎng)度正好是20,與請(qǐng)求中的per_page值相同,毫無疑問,我們要找的每張圖片鏈接就在這里。
          分析網(wǎng)頁往往比較耗時(shí),不過總的來說還算順利,下面我們正式爬取圖片。
          2. 爬取圖片

          2.1 導(dǎo)入模塊?

          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:偽裝瀏覽器信息

          2.2 獲取圖片?
          模擬代理,以網(wǎng)頁的身份訪問服務(wù)器,避免請(qǐng)求被服務(wù)器判定為機(jī)器爬蟲而不響應(yīng)請(qǐng)求

          ua?= UserAgent(verify_ssl=False)
          headers?= {'User-Agent': ua.random}

          根據(jù)響應(yīng),獲取所有圖片鏈接:

          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

          2.3?保存圖片?
          保存圖片文件:

          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)

          效果:

          3. EXE工具

          腳本的功能已經(jīng)實(shí)現(xiàn),但如果你希望發(fā)給別人用或在其他電腦上執(zhí)行,必須同樣有python運(yùn)行環(huán)境。這就有那么一丟丟的不方便。
          所以我們將代碼打包成exe工具。
          運(yùn)行效果如下:


          關(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)鍵字:壁紙

          如果文章對(duì)你有幫助,歡迎轉(zhuǎn)發(fā)/點(diǎn)贊/收藏~

          作者:歐King

          來源:Python當(dāng)打之年


          _往期文章推薦_

          一個(gè)小腳本,每天同步必應(yīng)圖片做桌面




          如需了解付費(fèi)精品課程教學(xué)答疑服務(wù)
          請(qǐng)?jiān)?strong style="max-width: 100%;overflow-wrap: break-word !important;box-sizing: border-box !important;">Crossin的編程教室內(nèi)回復(fù): 666

          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男女黄色在线观看 | 操逼图片视频免费看喷水高朝 | sm在线 | 亚洲在线三级片 | 国产黄片在线视频 |