多年前从某度换成bing作为日常搜索引擎。虽然搜索效果还差强人意,但bing的每日精选的壁纸的确是一大特色。当时就产生一个念头,如果能够一键下载并且设置它为本地桌面壁纸就好了。这里放上基于python requests 和 BeautifulSoup的两个包,实现如题所示功能的代码。
import os
import requests
from bs4 import BeautifulSoup
import win32api,win32con,win32gui
def download_bing_wallpaper(filepath):
url = "https://cn.bing.com"
try:
r = requests.get(url)
except:
print("下载失败,请检查你的网络连接!")
input("\n请按任意键退出:")
exit()
soup = BeautifulSoup(r.text,features="lxml")
ls = soup.select("link")
url_img = url+ls[0].attrs["href"] # 获取图片链接
jj = ls[0].attrs["href"].split("&")
j = jj[0].split("=")
fname = j[1] # 获取图片文件名
fjf = soup.select("#sh_cp")
des = fjf[0].attrs["title"] # 获取图片描述
with open(os.path.join(filepath,fname),"wb") as f:
f.write(requests.get(url_img).content) # 保存图片
print(fname)
print(des)
return os.path.join(filepath,fname)
def set_wallpaper(filepath):
"""适用于win10系统"""
#打开指定注册表路径
reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
#最后的参数:2拉伸,0居中,6适应,10填充,0平铺
win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
#最后的参数:1表示平铺,拉伸居中等都是0
win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0")
#刷新桌面
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,filepath, win32con.SPIF_SENDWININICHANGE)
if __name__ == "__main__":
subdir = os.path.join(os.path.expanduser("~/Pictures"),"Wallpaper") #放到wallpaper子文件夹中
if not os.path.exists(subdir):
os.mkdir(subdir)
set_wallpaper(download_bing_wallpaper(filepath=subdir))
input("\n桌面壁纸设置完成,请按任意键退出:")
此代码基于python3.6,应该3版本都能运行。BeautifulSoup包需要安装,读者可以自行pip install。把代码拷贝保存为后缀"py"文件(如"每日壁纸.py"),双击即可运行。如果无法运行,可能是因为python没有设置成环境变量,这个操作请自行到网上搜索解决方案。