赞
踩
众所周知,一个良好的桌面壁纸能提高写代码的心情,也能加强在电脑面前吃泡面的食欲 但是找到一个合适壁纸是多么麻烦是事情,所以很多小伙伴不想麻烦,于是我的想法诞生了
先看效果图
只需要双击图标就可以切换下一张图片
还可以定时自动更换壁纸(后面详细介绍)
执行逻辑:
1.先去寻找高清壁纸网站
2.编写爬虫将大量图片保存到本地
3.编写代码将图片设置为壁纸
4.增加定时更新模块
一、目标地址
https://pic.netbian.com
二、爬虫代码
- '''
- 目标网站: https://pic.netbian.com
- '''
- from requests_html import HTMLSession
- import re,os
- import requests
- from tqdm import tqdm
- from functools import partial
- from multiprocessing import Pool
- session = HTMLSession()
-
- # 获取下载链接
- def get_urllist(addr):
- '''
- :addr: 传入该网站一个地址
- :return: 返回一个高清大图下载地址字典(标题:url)
- '''
- addr = f'https://pic.netbian.com{addr}'
- r = session.get(addr)
- # // 查看页面内容
- # print(r.html.html)
- # 获取链接
- # print(r.html.links) # 所有链接
- url_list = r.html.absolute_links # 绝对链接
- # print(url_list)
- rule = re.compile('(https://pic.netbian.com/tupian/[0-9]{1,9}.html)')
-
- href_list = re.findall(rule,str(url_list))
- # print(href_list)
- # print('获取图片:',len(href_list))
- # 请求进去得到高清壁纸
- complete_url_dict = {}
- for i in href_list:
- response = session.get(i)
- # print(response.html.html)
- # 获取部分url
- imperfect_url = response.html.xpath("//a[@id='img']/img/@src",first=True)
- title = response.html.xpath("//a[@id='img']/img/@title",first=True)
- # 拼接完整url
- url = f'https://pic.netbian.com{imperfect_url}'
- complete_url_dict.update({url:title})
-
- return complete_url_dict
-
-
- # 下载图片
- def download(url_dict,save_path):
- '''
- :save_path: 保存目录
- :param url_dict: 图片下载地址列表
- :return:
- '''
- # print(url_dict)
- name_list = os.listdir(save_path)
- # print(name_list)
- # for url,title in tqdm(url_dict.items()):
- url = url_dict[0]
- title = url_dict[1]
- if f'{title}.jpg' in name_list:
- print(title,'已存在...跳过!')
- pass
- else:
- with open(f'{save_path}/{title}.jpg', mode='wb') as f:
- f.write(requests.get(url).content)
- # print(title,':写入成功!')
-
- if __name__ == '__main__':
- # 根据网站创建图片分类
- dic = {
- '4k风景':'/4kfengjing/',
- '4k美女':'/4kmeinv/',
- '4k游戏': '/4kyouxi/',
- '4k动漫': '/4kdongman/',
- '4k影视': '/4kyingshi/',
- '4k汽车': '/4kqiche/',
- '4k动物': '/4kdongwu/',
- '4k人物': '/4krenwu/',
- '4k美食': '/4kmeishi/',
- '4k宗教': '/4kzongjiao/',
- '4k背景': '/4kbeijing/',
- '4k手机壁纸': '/shoujibizhi/',
-
- }
- # url:title 字典
- print('图片下载器'.center(50,'='))
- for id,i in enumerate(dic.keys()):
- print(f'{id+1}.{i}')
- print(''.center(50, '='))
- try:
- idd = int(input('请选择图片序号:'))-1
- num = int(input('请选择下载页数:'))
- if num > 10:
- print('为确保安全,最多下载10页!!')
- num = 10
- if num <= 0:
- print('1<下载页数<10')
- exit()
- except:
- print('请输入数字!')
- exit()
- print('正在获取下载链接-/-/')
- name = list(dic.keys())[idd]
- # 第一页链接
- url_dict = get_urllist(dic[name])
- # 后几页链接
- for x in range(1,num):
- url_dict.update(get_urllist(dic[name]+f'index_{x+1}.html'))
- print('下载图片张数:',len(url_dict))
- save_path = f'./图片/{name}'
- if not os.path.exists(save_path):
- os.mkdir(save_path)
- # print(url_dict)
- # 下载图片
- # download(url_dict,save_path)
- print('正在下载-/-/')
- func = partial(download, save_path=save_path)
- pool = Pool(10)
- r = list(tqdm(pool.imap(func, url_dict.items()), total=len(url_dict.items()), ncols=80))
- pool.close()
- pool.join()
运行效果如下:
三、将图片设置为桌面背景
-
- import os
- import random
- import ctypes
-
-
- def fun(path):
- # path = r"E:\py开发环境\图片\4k动物" # 存储图片的文件夹
- file = os.listdir(path) # 打开文件夹
- filepath = f" {path}\\{random.choice(file)}" # 随机选取某张图片,拼接绝对地址
- print(filepath)
- ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0) # 设置桌面壁纸
-
- fun(r"E:\py开发环境\图片\4k风景")
四、增加定时(每隔30分钟刷新一次壁纸)
while 1: path = r"E:\py开发环境\图片\4k动漫"# // 存储图片的文件夹 fun(path) time.sleep(1800)
五、最后换一个图标,双击运行,大工告成
注意点:后面运行双击py文件时 会出现弹窗 需要将.py修改为.pyw即可
以上内容仅仅只做学习交流,切勿用做其他
欢迎一起学习进步wx:py-open-cv
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。