bing网站的背景图片每天都更换,我的电脑桌面也想每天都换成它的背景图片,如何操作呢!接下来就抓取一下bing网站的背景图片写一个每天都更换壁纸的小dome。
环境配置:
python3.6.5pycharmpython pip安装 requests pywin32 pyinstaller
bing网站截取背景图片地址:
/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US
请求的信息如下:图片信息在url参数里它的结构为josn格式里面有一个list然后是一个字典由此可以解析为:
bing = requests.get(url="/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US").json()i = bing['images'][0]['url']
得到一个背景地址,再添加上前缀再次请求:
requests.get(url="" + i)
这次请求的背景图片大功告成。
接下来就把他保存到本地再进行设置背景图片,
这个地址实际请求的是一堆二进制,只需要把这些二进制文件保存到本地就可以。
# 请求bing网站提取背景图片地址bing = requests.get(url="/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US").json()i = bing['images'][0]['url']# 从新拼接背景图地址ima = requests.get(url="" + i)# 转二进制保存至本地,从新命名为png文件img = ima.contentwith 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 : -11-08 18:00# Name : mild# File : rest.pyimport requestsimport win32api,win32con,win32guifrom datetime import datetimedef dow_img(path):# 请求bing网站提取背景图片地址bing = requests.get(url="/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US").json()i = bing['images'][0]['url']# 从新拼接背景图地址ima = requests.get(url="" + i)# 转二进制保存至本地,从新命名为png文件img = ima.contentwith 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可执行程序
打开cmdcd到源文件所在路径运行pyinstaller -F 文件名.py运行结束后,disc文件夹下就有了可以执行的exe文件
设置Windows任务
控制面板->管理工具->任务计划程序创建任务填写名称操作-启动程序 选择程序路径点击触发器-设置为当用户登陆时 -可以设置延时为3秒后设置完成。