让我来详细讲解一下“趣味Python实战练习之自动更换桌面壁纸脚本附源码”的完整攻略。
1. 项目介绍
本项目是一个Python实战练习,旨在通过编写一个自动更换桌面壁纸脚本,锻炼Python编程能力。
2. 项目要求
实现一个定时自动更换桌面壁纸的脚本,支持手动更换和定时更换两种方式。脚本通过爬取指定壁纸网站的图片,将图片下载到本地,然后设置为桌面壁纸。同时,每次更换壁纸成功后,需要将当前时间、更换的图片名称和图片地址保存到日志文件中。
3. 实现步骤及示例
3.1 环境准备
首先,需要准备Python 3.x的环境,并安装必要的第三方库,包括:
- requests:用于请求网络资源和下载图片
- beautifulsoup4:用于解析HTML页面和提取图片链接
这里以Windows系统为例安装所需库:
pip install requests
pip install beautifulsoup4
3.2 网站选择
其次,需要选择一个合适的壁纸网站,这里以Bing每日壁纸为例子(https://www.bing.com/)
3.3 代码实现
下面是代码的实现,包含两个部分:
- one_picture.py:手动更换壁纸
- timed_picture.py:定时更换桌面壁纸
# one_picture.py
import os
import random
import requests
from bs4 import BeautifulSoup
from datetime import datetime
def download_picture(url, save_path):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
}
response = requests.get(url, headers=headers)
with open(save_path, 'wb') as f:
f.write(response.content)
def get_picture_url(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
url_raw = soup.find('div', id='bgImgProgLoad')['data-ultra-definition-src']
url = 'https://www.bing.com' + url_raw
return url
def set_wallpaper(path):
key = 'WallpaperStyle' # 填充:2 适应:6
value = '6'
cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v {} /t REG_SZ /d {} /f'.format(key, value)
os.system(cmd)
cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v Wallpaper /t REG_SZ /d \"{}\" /f'.format(path)
os.system(cmd)
cmd = 'RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters'
os.system(cmd)
if __name__ == '__main__':
url = 'https://www.bing.com/?ensearch=1'
picture_name = datetime.now().strftime('%Y%m%d%H%M%S') + '.jpg'
picture_path = os.path.join(os.getcwd(), picture_name)
download_picture(get_picture_url(url), picture_path)
set_wallpaper(picture_path)
print('Success: {:s}'.format(picture_name))
# timed_picture.py
import os
import random
import requests
import time
from bs4 import BeautifulSoup
from datetime import datetime
def download_picture(url, save_path):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
}
response = requests.get(url, headers=headers)
with open(save_path, 'wb') as f:
f.write(response.content)
def get_picture_url(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
url_raw = soup.find('div', id='bgImgProgLoad')['data-ultra-definition-src']
url = 'https://www.bing.com' + url_raw
return url
def set_wallpaper(path):
key = 'WallpaperStyle' # 填充:2 适应:6
value = '6'
cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v {} /t REG_SZ /d {} /f'.format(key, value)
os.system(cmd)
cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v Wallpaper /t REG_SZ /d \"{}\" /f'.format(path)
os.system(cmd)
cmd = 'RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters'
os.system(cmd)
if __name__ == '__main__':
while True:
url = 'https://www.bing.com/?ensearch=1'
picture_name = datetime.now().strftime('%Y%m%d%H%M%S') + '.jpg'
picture_path = os.path.join(os.getcwd(), picture_name)
download_picture(get_picture_url(url), picture_path)
set_wallpaper(picture_path)
print('Success: {:s}'.format(picture_name))
with open('log.txt', 'a', encoding='utf-8') as f:
f.write('{:s} {:s} {:s}\n'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), picture_name, url))
time.sleep(1800)
在实现过程中,涉及到了一些知识点,比如:
- requests库:用于向网站发送HTTP请求;
- BeautifulSoup库:用于解析网站HTML页面,获取需要的图片链接;
- os库:用于操作文件;
- datetime库:用于获取当前时间;
- time库:用于进行定时;
- 注册表:用于更改桌面壁纸风格及设置桌面壁纸。
其中需要注意的是,“set_wallpaper()”函数部分,Windows系统有多种桌面壁纸风格,本脚本中使用的是“适应”风格,其他风格可自行修改。
3.4 运行结果
在运行脚本后,可看到控制台输出更换的壁纸名称和日志信息,同时桌面壁纸也已经实现更换。
还可以根据需求通过修改代码,定制不同的壁纸网站和更换频率等参数。
4. 总结
本项目通过实现一个自动更换桌面壁纸脚本,锻炼了Python编程能力,掌握了爬取网站信息及操作系统壁纸设置等技能。同时,也开拓了思路,可以拓展到其他自动化工具的实现中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:趣味Python实战练习之自动更换桌面壁纸脚本附源码 - Python技术站