Python 下載Bing壁紙的示例
這個(gè)示例使用的Python版本為3.7版本,
一、bing壁紙接口
訪(fǎng)問(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/python
import requests
import 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)求頭,模擬瀏覽器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()
通過(guò)上面的請(qǐng)求接收到的json類(lèi)似下面的格式,注意我們需要的圖片是在$.images[*].url這里,雖然沒(méi)寫(xiě)完整的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)制只寫(xiě)打開(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/python
import requests
import 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)求頭,模擬瀏覽器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ā)送請(qǐng)求
r = requests.get(url=url, headers=headers)
# 將響應(yīng)的字符串轉(zhuǎn)化為json數(shù)據(jù),即dict類(lèi)型
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)制只寫(xiě)打開(kāi)文件
with open(save_image_file, 'wb') as f:
# 圖片的二進(jìn)制數(shù)據(jù)
f.write(r.content)
還有微軟官方也推出了bing壁紙的Windows版,不介意壁紙上有l(wèi)ogo的話(huà)可以嘗試下,官方地址:
https://www.microsoft.com/en-us/bing/bing-wallpaper
如果能看到最后,或?qū)δ阌袔椭脑?huà),歡迎在評(píng)論區(qū)留言一起交流。
以上就是Python 下載Bing壁紙的示例的詳細(xì)內(nèi)容,更多關(guān)于Python 下載Bing壁紙的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python實(shí)現(xiàn)壁紙下載與輪換
- python實(shí)現(xiàn)壁紙批量下載代碼實(shí)例
- 編寫(xiě)Python腳本批量下載DesktopNexus壁紙的教程
- python批量下載壁紙的實(shí)現(xiàn)代碼
- python Requsets下載開(kāi)源網(wǎng)站的代碼(帶索引 數(shù)據(jù))
- 用Python自動(dòng)下載網(wǎng)站所有文件
- python 制作網(wǎng)站小說(shuō)下載器
- python批量下載網(wǎng)站馬拉松照片的完整步驟
- python抓取網(wǎng)站的圖片并下載到本地的方法
- Python 批量下載陰陽(yáng)師網(wǎng)站壁紙
相關(guān)文章
Python+OpenCV實(shí)現(xiàn)基本的圖像處理操作
說(shuō)到圖像處理,那必然要提到opencv模塊了。本文將從最基本的opencv模塊在圖像的基本操作上說(shuō)起,利用Python+OpenCV實(shí)現(xiàn)圖像的讀取保存等,感興趣的可以了解一下2022-07-07
python中datetime模塊中strftime/strptime函數(shù)的使用
這篇文章主要介紹了python中datetime模塊中strftime/strptime函數(shù)的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python實(shí)現(xiàn)數(shù)據(jù)庫(kù)與Excel文件之間的數(shù)據(jù)自動(dòng)化導(dǎo)入與導(dǎo)出
數(shù)據(jù)庫(kù)和Excel文件是兩種常見(jiàn)且重要的數(shù)據(jù)存儲(chǔ)方式,本文將介紹如何使用Python有效地實(shí)現(xiàn)數(shù)據(jù)庫(kù)與Excel文件之間的數(shù)據(jù)自動(dòng)化導(dǎo)入與導(dǎo)出,以SQLite數(shù)據(jù)庫(kù)為例,需要的朋友可以參考下2024-06-06
Pandas數(shù)據(jù)操作分析基本常用的15個(gè)代碼片段
這篇文章主要介紹了Pandas數(shù)據(jù)操作分析基本常用的15個(gè)代碼片段,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Go/Python/Erlang編程語(yǔ)言對(duì)比分析及示例代碼
這篇文章主要介紹了Go/Python/Erlang編程語(yǔ)言對(duì)比分析及示例代碼,本文重點(diǎn)是給大家介紹go語(yǔ)言,從語(yǔ)言對(duì)比分析的角度切入介紹,需要的朋友可以參考下2018-04-04
親手教你用Python打造一款摸魚(yú)倒計(jì)時(shí)界面
前段時(shí)間在微博看到一段摸魚(yú)人的倒計(jì)時(shí)模板,感覺(jué)很有意思,于是我用了一個(gè)小時(shí)的時(shí)間寫(xiě)一個(gè)頁(yè)面出來(lái),下面小編把實(shí)現(xiàn)過(guò)程分享給大家,對(duì)Python摸魚(yú)倒計(jì)時(shí)界面感興趣的朋友一起看看吧2021-12-12
python實(shí)現(xiàn)圖片加文字水印OPenCV和PIL庫(kù)
本文來(lái)為大家介紹一下,使用python中的庫(kù)實(shí)現(xiàn)給圖片添加文字水印,openCV可以給圖片添加水印,如果要添加漢字水印那就要使用PIL庫(kù)2021-09-09
pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法
最近在使用pip安裝python的時(shí)候遇到些問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于pip安裝python庫(kù)時(shí)報(bào)Failed?building?wheel?for?xxx錯(cuò)誤的解決方法,需要的朋友可以參考下2023-01-01
基于Python實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)功能詳解
這篇文章主要為大家介紹了基于Python如何實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)的功能,文章的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的朋友可以學(xué)習(xí)一下2021-12-12
Python中等待5秒并暫停執(zhí)行的方法總結(jié)
Python 具有各種功能和庫(kù)來(lái)創(chuàng)建交互式應(yīng)用程序,用戶(hù)可以在其中提供輸入和響應(yīng), 我們可以創(chuàng)建需要暫停應(yīng)用程序執(zhí)行的情況,本文主要和大家分享三個(gè)Python 中等待 5 秒并暫停執(zhí)行的方法,有需要的可以參考下2023-10-10

