Python 下載Bing壁紙的示例
這個(gè)示例使用的Python版本為3.7版本,
一、bing壁紙接口
訪問(wèn)bing的官網(wǎng),通過(guò)瀏覽器開(kāi)發(fā)者工具,查看網(wǎng)絡(luò)可以找到一個(gè)請(qǐng)求壁紙的接口,至于怎么判斷的,我是發(fā)現(xiàn)當(dāng)我把鼠標(biāo)放在切換壁紙的左右箭頭時(shí),發(fā)現(xiàn)發(fā)送了一個(gè)請(qǐng)求,查看請(qǐng)求里面是有當(dāng)前的壁紙信息的,鏈接、描述等等……
于是乎得到了這個(gè)接口,這個(gè)接口似乎就是獲取壁紙信息的接口了
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1600743189543&pid=hp
再結(jié)合網(wǎng)上收集的資料,可以找到鏈接上的參數(shù)解釋
參數(shù) 說(shuō)明 可能的值 format 返回?cái)?shù)據(jù)格式,固定是json的 js idx 倒數(shù)第幾天的壁紙,最大為7天內(nèi),正整數(shù)表示倒數(shù)第幾天 0,1,2 ... 7 n 一次獲取多少?gòu)垐D片,最大值為7 1,2 ... 7 nc 時(shí)間戳,以毫秒表示 1600743189543 pid 不知道這個(gè)參數(shù)有啥用 hp
二、Python程序
首先肯定是讀取接口的返回?cái)?shù)據(jù)了,這次使用的是requests框架,可以使用pip安裝
pip install requests
獲取壁紙json數(shù)據(jù)
#!/usr/bin/pythonimport requestsimport time# 時(shí)間戳timestamp = str(int(time.time() * 1000))# 拼接請(qǐng)求地址url = ’https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=’ + timestamp + ’&pid=hp’# 請(qǐng)求頭,模擬瀏覽器UAheaders = { ’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()
通過(guò)上面的請(qǐng)求接收到的json類似下面的格式,注意我們需要的圖片是在$.images[*].url這里,雖然沒(méi)寫完整的url,不過(guò)經(jīng)過(guò)嘗試也可以知道是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': '上一個(gè)圖像','next': '下一個(gè)圖像','walle': '此圖片不能下載用作壁紙。','walls': '下載今日美圖。僅限用作桌面壁紙。'}}
獲取到圖片地址后,就可以下載圖片了,再結(jié)合上面的代碼,加上下面的保存圖片代碼
# 獲取第一個(gè)圖片的鏈接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)# 注意要以二進(jìn)制只寫打開(kāi)文件with open(save_image_file, ’wb’) as f: # 圖片的二進(jìn)制數(shù)據(jù) f.write(r.content)
好了,圖片下載好并保存了,根據(jù)bing接口返回的數(shù)據(jù),根據(jù)網(wǎng)友們的說(shuō)法,最大可以獲得16張bing壁紙圖片,通過(guò)跳轉(zhuǎn)idx和n這兩個(gè)參數(shù),有興趣可以試試,這里我就不再多說(shuō)了,另外這個(gè)程序可以再做一些拓展,把多張bing壁紙保存下來(lái)。完整的代碼如下
#!/usr/bin/pythonimport requestsimport time# 時(shí)間戳timestamp = str(int(time.time() * 1000))# 拼接請(qǐng)求地址url = ’https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=’ + timestamp + ’&pid=hp’# 請(qǐng)求頭,模擬瀏覽器UAheaders = { ’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ā)送請(qǐng)求r = requests.get(url=url, headers=headers)# 將響應(yīng)的字符串轉(zhuǎn)化為json數(shù)據(jù),即dict類型result = r.json()# 獲取第一個(gè)圖片的鏈接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)# 注意要以二進(jìn)制只寫打開(kāi)文件with open(save_image_file, ’wb’) as f: # 圖片的二進(jìn)制數(shù)據(jù) f.write(r.content)
還有微軟官方也推出了bing壁紙的Windows版,不介意壁紙上有l(wèi)ogo的話可以嘗試下,官方地址:
https://www.microsoft.com/en-us/bing/bing-wallpaper
如果能看到最后,或?qū)δ阌袔椭脑挘瑲g迎在評(píng)論區(qū)留言一起交流。
以上就是Python 下載Bing壁紙的示例的詳細(xì)內(nèi)容,更多關(guān)于Python 下載Bing壁紙的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. python 如何在 Matplotlib 中繪制垂直線2. bootstrap select2 動(dòng)態(tài)從后臺(tái)Ajax動(dòng)態(tài)獲取數(shù)據(jù)的代碼3. ASP常用日期格式化函數(shù) FormatDate()4. python中@contextmanager實(shí)例用法5. html中的form不提交(排除)某些input 原創(chuàng)6. CSS3中Transition屬性詳解以及示例分享7. js select支持手動(dòng)輸入功能實(shí)現(xiàn)代碼8. 如何通過(guò)python實(shí)現(xiàn)IOU計(jì)算代碼實(shí)例9. 開(kāi)發(fā)效率翻倍的Web API使用技巧10. vue使用moment如何將時(shí)間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時(shí)間格式
