bing網站的背景圖片每天都更換,我的電腦桌面也想每天都換成它的背景圖片,如何操作呢!接下來就抓取一下bing網站的背景圖片寫一個每天都更換壁紙的小dome。
環境配置:
- python3.6.5
- pycharm
- python pip安裝 requests pywin32 pyinstaller
bing網站截取背景圖片地址:
-
http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US
- 請求的信息如下:
- 圖片信息在url參數裏它的結構爲josn格式裏面有一個list然後是一個字典由此可以解析爲:
-
bing = requests.get(url="http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US").json() i = bing['images'][0]['url']
- 得到一個背景地址,再添加上前綴再次請求:
-
requests.get(url="http://cn.bing.com" + i)
- 這次請求的背景圖片大功告成。
接下來就把他保存到本地再進行設置背景圖片,
- 這個地址實際請求的是一堆二進制,只需要把這些二進制文件保存到本地就可以。
-
# 請求bing網站提取背景圖片地址 bing = requests.get(url="http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US").json() i = bing['images'][0]['url'] # 從新拼接背景圖地址 ima = requests.get(url="http://cn.bing.com" + i) # 轉二進制保存至本地,從新命名爲png文件 img = ima.content with open(C:\\image\\img.png, 'wb') as f: f.write(img)
- 運行代碼看是否保存到本地:
- 保存成功。
保存圖片成功後需要設置電腦背景圖片:
-
#控制windows系統 import win32api,win32con,win32gui # 打開windows註冊表 HKEY_CURRENT_USER 並且設置屬性 k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control panel\\Desktop", 0, win32con.KEY_SET_VALUE) # 在HKEY_CURRENT_USER註冊表中寫入屬性值,0表示桌面壁紙居中,2表示拉伸桌面 win32api.RegSetValueEx(k, "wapaperStyle", 0, win32con.REG_SZ, "2") win32api.RegSetValueEx(k, "TileWallpaper", 0, win32con.REG_SZ, "0") # 刷新桌面 win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, C:\\image\\img.png, win32con.SPIF_SENDWININICHANGE)
- 整理代碼後:
# -*- coding: utf-8 -*-
# Time : 2019-11-08 18:00
# Name : mild
# File : rest.py
import requests
import win32api,win32con,win32gui
from datetime import datetime
def dow_img(path):
# 請求bing網站提取背景圖片地址
bing = requests.get(url="http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US").json()
i = bing['images'][0]['url']
# 從新拼接背景圖地址
ima = requests.get(url="http://cn.bing.com" + i)
# 轉二進制保存至本地,從新命名爲png文件
img = ima.content
with open(path, 'wb') as f:
f.write(img)
def desktop_img(bmp_path):
# 打開windows註冊表 HKEY_CURRENT_USER 並且設置屬性
k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,
"Control panel\\Desktop", 0, win32con.KEY_SET_VALUE)
# 在HKEY_CURRENT_USER註冊表中寫入屬性值,0表示桌面壁紙居中,2表示拉伸桌面
win32api.RegSetValueEx(k, "wapaperStyle", 0, win32con.REG_SZ, "2")
win32api.RegSetValueEx(k, "TileWallpaper", 0, win32con.REG_SZ, "0")
# 刷新桌面
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, bmp_path, win32con.SPIF_SENDWININICHANGE)
# 調取系統時間
Dt = datetime.now()
# 以年月日命名圖片名稱
TimeN = Dt.strftime('%Y-%m-%d')
# 圖片保存地址以及設置背景圖片地址
path = "C:\\Users\\13513\\Pictures\\bing\\"+TimeN+".png"
dow_img(path)
desktop_img(path)
最後兩步 :
打包Windows可執行程序
- 打開cmd
- cd到源文件所在路徑
- 運行pyinstaller -F 文件名.py
- 運行結束後,disc文件夾下就有了可以執行的exe文件
設置Windows任務
- 控制面板->管理工具->任務計劃程序
- 創建任務
- 填寫名稱
- 操作-啓動程序 選擇程序路徑
- 點擊觸發器-設置爲當用戶登陸時 -可以設置延時爲3秒後
- 設置完成。