PythonダウンロードBing壁紙の例


この例で使用されているPythonバージョンは3.7バージョンです。
一、bing壁紙ポート
Bingの公式サイトにアクセスして、ブラウザの開発者ツールを通じて、インターネットを見て壁紙を要求するインターフェースが見つかりました。どう判断しましたか?マウスを壁紙の左右の矢印に置いた時に、確認依頼の中に現在の壁紙情報があります。リンク、説明などがあります。

このインターフェースを手に入れました。このインターフェースは壁紙情報を取得するインターフェースのようです。
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1600743189543&pid=hp
ネットで収集した資料を結び付けると、リンク上のパラメータ解釈が見つけられます。
パラメータ
説明
可能な値
フォーマット
データフォーマットを返します。固定はjsonです。
js。
idx
最後から数日目の壁紙は最大7日間で、正の整数は最後から数日目を表します。
0,1,2…7
n
一回に何枚の写真を獲得しますか?最大値は7です。
1,2…7
nc
タイムスタンプをミリ秒で表示します。
160043189543
pid
このパラメータの効果は分かりません。
hp。
二、Pythonプログラム
まず、必ずインターフェースの返却データを読みます。今回はrequestsフレームを使って、pipを使ってインストールできます。

pip install requests
壁紙を取得する

#!/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は以下のようなフォーマットです。私達が必要とする画像は$margs[*]であることに注意してください。urlはここで、完全なurlは書いていませんが、試してみても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": "      。        。"
	}
}
画像の住所を取得したら、画像をダウンロードできます。上のコードに合わせて、下の保存画像コードを追加します。

#           
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:
  #         
  f.write(r.content)
はい、画像をダウンロードして保存しました。bingインタフェースから返ってきたデータによれば、最大16枚のbingの壁紙画像が得られます。idxとnの2つのパラメータをジャンプすることによって、試してみてもいいです。ここではこれ以上話しません。また、このプログラムはもういくつかの拡張をして、複数の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'])
}
#     
r = requests.get(url=url, headers=headers)
#           json  , 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:
  #         
  f.write(r.content)
また、マイクロソフトの公式サイトでもBIG壁紙のWindows版が発売されています。壁紙にロゴがあるなら試してみてください。
https://www.microsoft.com/en-us/bing/bing-wallpaper
最後までご覧になったり、あなたの役に立ちましたら、コメントエリアで一緒に交流してください。
以上はPythonがBing壁紙をダウンロードした例の詳細です。PythonがBing壁紙をダウンロードしたことについての資料は他の関連記事に注目してください。