bing网站的背景图片每天都更换,我的电脑桌面也想每天都换成它的背景图片,如何操作呢!接下来就抓取一下bing网站的背景图片写一个每天都更换壁纸的小dome。

环境配置:

  1. python3.6.5
  2. pycharm
  3. 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)
  • 这次请求的背景图片大功告成。

接下来就把他保存到本地再进行设置背景图片,

  1. 这个地址实际请求的是一堆二进制,只需要把这些二进制文件保存到本地就可以。
# 请求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)
  1. 运行代码看是否保存到本地:
  2. 保存成功。

保存图片成功后需要设置电脑背景图片:

#控制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可执行程序

  1. 打开cmd
  2. cd到源文件所在路径
  3. 运行pyinstaller -F 文件名.py
  4. 运行结束后,disc文件夹下就有了可以执行的exe文件

设置Windows任务

  1. 控制面板->管理工具->任务计划程序
  2. 创建任务
  3. 填写名称
  4. 操作-启动程序 选择程序路径
  5. 点击触发器-设置为当用户登陆时 -可以设置延时为3秒后
  6. 设置完成。