Python 下載Bing壁紙的示例
這個示例使用的Python版本為3.7版本,
一、bing壁紙接口
訪問bing的官網(wǎng),通過瀏覽器開發(fā)者工具,查看網(wǎng)絡(luò)可以找到一個請求壁紙的接口,至于怎么判斷的,我是發(fā)現(xiàn)當我把鼠標放在切換壁紙的左右箭頭時,發(fā)現(xiàn)發(fā)送了一個請求,查看請求里面是有當前的壁紙信息的,鏈接、描述等等……
于是乎得到了這個接口,這個接口似乎就是獲取壁紙信息的接口了
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1600743189543&pid=hp
再結(jié)合網(wǎng)上收集的資料,可以找到鏈接上的參數(shù)解釋
參數(shù) | 說明 | 可能的值 |
---|---|---|
format | 返回數(shù)據(jù)格式,固定是json的 | js |
idx | 倒數(shù)第幾天的壁紙,最大為7天內(nèi),正整數(shù)表示倒數(shù)第幾天 | 0,1,2 ... 7 |
n | 一次獲取多少張圖片,最大值為7 | 1,2 ... 7 |
nc | 時間戳,以毫秒表示 | 1600743189543 |
pid | 不知道這個參數(shù)有啥用 | hp |
二、Python程序
首先肯定是讀取接口的返回數(shù)據(jù)了,這次使用的是requests框架,可以使用pip安裝
pip install requests
獲取壁紙json數(shù)據(jù)
#!/usr/bin/python import requests import time # 時間戳 timestamp = str(int(time.time() * 1000)) # 拼接請求地址 url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=' + timestamp + '&pid=hp' # 請求頭,模擬瀏覽器UA headers = { 'User-Agent': ' '.join(['Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14)', 'AppleWebKit/537.36 (KHTML, like Gecko)', 'Chrome/70.0.3538.102', 'Safari/537.36', 'Edge/18.18363']) } r = requests.get(url=url, headers=headers) result = r.json()
通過上面的請求接收到的json類似下面的格式,注意我們需要的圖片是在$.images[*].url這里,雖然沒寫完整的url,不過經(jīng)過嘗試也可以知道是bing的域名了
{ "images": [{ "startdate": "20200921", "fullstartdate": "202009211600", "enddate": "20200922", "url": "/th?id=OHR.Matamata_ZH-CN8111830275_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp", "urlbase": "/th?id=OHR.Matamata_ZH-CN8111830275", "copyright": "馬塔馬塔附近的霍比特人村,新西蘭北島 (© 500px Asia/Getty Images)", "copyrightlink": "https://www.bing.com/search?q=%E9%A9%AC%E5%A1%94%E9%A9%AC%E5%A1%94&form=hpcapt&mkt=zh-cn", "title": "", "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20200921_Matamata%22&FORM=HPQUIZ", "wp": true, "hsh": "fab9fa6464d63e134ae0415d9f67aac5", "drk": 1, "top": 1, "bot": 1, "hs": [] }], "tooltips": { "loading": "正在加載...", "previous": "上一個圖像", "next": "下一個圖像", "walle": "此圖片不能下載用作壁紙。", "walls": "下載今日美圖。僅限用作桌面壁紙。" } }
獲取到圖片地址后,就可以下載圖片了,再結(jié)合上面的代碼,加上下面的保存圖片代碼
# 獲取第一個圖片的鏈接 image_url = result['images'][0]['url'] # 拼接上bing的域名 image_url = 'https://cn.bing.com' + image_url # 定義圖片保存地址 save_image_file = '/opt/images/bing.jpg' # 下載圖片 r = requests.get(url=image_url, headers=headers) # 注意要以二進制只寫打開文件 with open(save_image_file, 'wb') as f: # 圖片的二進制數(shù)據(jù) f.write(r.content)
好了,圖片下載好并保存了,根據(jù)bing接口返回的數(shù)據(jù),根據(jù)網(wǎng)友們的說法,最大可以獲得16張bing壁紙圖片,通過跳轉(zhuǎn)idx和n這兩個參數(shù),有興趣可以試試,這里我就不再多說了,另外這個程序可以再做一些拓展,把多張bing壁紙保存下來。
完整的代碼如下
#!/usr/bin/python import requests import time # 時間戳 timestamp = str(int(time.time() * 1000)) # 拼接請求地址 url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=' + timestamp + '&pid=hp' # 請求頭,模擬瀏覽器UA headers = { 'User-Agent': ' '.join(['Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14)', 'AppleWebKit/537.36 (KHTML, like Gecko)', 'Chrome/70.0.3538.102', 'Safari/537.36', 'Edge/18.18363']) } # 發(fā)送請求 r = requests.get(url=url, headers=headers) # 將響應(yīng)的字符串轉(zhuǎn)化為json數(shù)據(jù),即dict類型 result = r.json() # 獲取第一個圖片的鏈接 image_url = result['images'][0]['url'] # 拼接上bing的域名 image_url = 'https://cn.bing.com' + image_url # 定義圖片保存地址 save_image_file = '/opt/images/bing.jpg' # 下載圖片 r = requests.get(url=image_url, headers=headers) # 注意要以二進制只寫打開文件 with open(save_image_file, 'wb') as f: # 圖片的二進制數(shù)據(jù) f.write(r.content)
還有微軟官方也推出了bing壁紙的Windows版,不介意壁紙上有l(wèi)ogo的話可以嘗試下,官方地址:
https://www.microsoft.com/en-us/bing/bing-wallpaper
如果能看到最后,或?qū)δ阌袔椭脑?,歡迎在評論區(qū)留言一起交流。
以上就是Python 下載Bing壁紙的示例的詳細內(nèi)容,更多關(guān)于Python 下載Bing壁紙的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python+OpenCV實戰(zhàn)之利用?K-Means?聚類進行色彩量化
這篇文章主要介紹了如何利用?K-Means?聚類進行色彩量化,以減少圖像中顏色數(shù)量。文中的代碼具有一定的學習價值,感興趣的小伙伴可以關(guān)注一下2021-12-12Python利用memory_profiler實現(xiàn)內(nèi)存分析
memory_profiler是第三方模塊,用于監(jiān)視進程的內(nèi)存消耗以及python程序內(nèi)存消耗的逐行分析。本文將利用memory_profiler實現(xiàn)內(nèi)存分析,需要的可以參考一下2022-10-10Python生成可執(zhí)行文件.exe操作完整流程記錄
.exe是文件擴展名,帶有.exe擴展名的文件名按下Enter鍵就可運行,這篇文章主要給大家介紹了關(guān)于Python生成可執(zhí)行文件.exe操作完整流程的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-05-05python itchat實現(xiàn)調(diào)用微信接口的第三方模塊方法
這篇文章主要介紹了python itchat實現(xiàn)調(diào)用微信接口的第三方模塊方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06Python使用Selenium實現(xiàn)淘寶搶單的流程分析
這篇文章主要介紹了Python使用Selenium實現(xiàn)淘寶搶單的流程分析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06pandas統(tǒng)計重復值次數(shù)的方法實現(xiàn)
這篇文章主要介紹了pandas統(tǒng)計重復值次數(shù)的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02