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秒后
- 设置完成。