1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

时间:2024-04-19 23:24:26

相关推荐

Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

前言

嗨喽,大家好,这里是魔王~

[课题]:

Python零基础爬虫之回车桌面壁纸

[课题介绍]:

壁纸不应该只是一张图片,它应该是一门哲学

回车桌面网100000张无水印,高分辨率,电脑桌面壁纸,

包括汽车,植物,动物,手机,美女,创意设计,摄影,旅游,以及绿色保护眼睛的壁纸等等

今天通过Python程序,采集上面大量的壁纸

[课程亮点]:

1、系统性分析页面2、多页面数据解析3、海量图片数据保存

[环境]:

python3.8pycharm.2requestsparsel

+python安装包 安装教程视频 anaconda等等 安装包

+pycharm社区版 专业版 及 激活码私我免费获取

爬虫基本思路:

一. 目标网站分析二. 代码实现1. 通过requests发送网络请求 获取到数据2. 通过re正则表达式在 网页源代码当中 提取需要的数据提取壁纸标题以及详情页链接3. 通过requests向每个壁纸详情页发送请求 获取到每个页面的数据4. 使用css选择器在所有页面的网页源代码当中 提取需要的数据提取所有的图片链接5. 通过requests向每个壁纸链接发送网络请求 获取到图片的二进制数据6. 保存图片三. 多页内容爬取四. 自动更换壁纸

“”"

导入模块

import requestsimport reimport parselimport os

爬取图片代码

for page in range(1, 11):print(f'-------------------------------------正在爬取第{page}页-------------------------------------')

# 1. 通过requests发送网络请求 获取到数据

html_data = requests.get(f'/{page}.html').text

# 2. 通过re正则表达式在 网页源代码当中 提取需要的数据

# 提取壁纸标题以及详情页链接detail_url_list = re.findall('<div><a href="(.*?)" target="_blank">(.*?)</a>', html_data)for detail_url, detail_title in detail_url_list:print(f'***************正在爬取{detail_title}***************')

# 3. 通过requests向每个壁纸详情页发送请求 获取到每个页面的数据

detail_html_data = requests.get(detail_url).text

# 4. 使用css选择器在所有页面的网页源代码当中 提取需要的数据

selector = parsel.Selector(detail_html_data)# 准备一个文件夹 存放壁纸if not os.path.exists('img/' + detail_title):os.mkdir('img/' + detail_title)# 提取所有的图片链接img_src_list = selector.css('.swiper-slide a img::attr(src)').getall()for img_src in img_src_list:# 替换大壁纸,太小了不叫壁纸img_url = img_src.replace('_360_360', '_source')

# 5. 通过requests向每个壁纸链接发送网络请求 获取到图片的二进制数据

img_data = requests.get(img_url).content# 在链接中提取图片标题img_title = img_url.split('/')[-1]

# 6. 保存图片

with open(f'img/{detail_title}/{img_title}', mode='wb') as f:f.write(img_data)print(img_title, '爬取成功!!!')print(detail_title, '爬取成功!!!')

自动换壁纸代码

导入模块

import win32apiimport win32conimport win32guiimport osimport time

def Windows_img(paperPath):k=win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control panel\\Desktop",0,win32con.KEY_SET_VALUE)# 在注册表中写入属性值win32api.RegSetValueEx(k,"wapaperStyle",0,win32con.REG_SZ,"2") # 0 代表桌面居中 2 代表拉伸桌面win32api.RegSetValueEx(k,"Tilewallpaper",0,win32con.REG_SZ,"0")win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,paperPath,win32con.SPIF_SENDWININICHANGE) # 刷新桌面

def changeWallpaper():"""文件夹/文件夹/图片"""path=input('请输入文件路径:')L2=os.listdir(path=path) # 得到文件路径下的壁纸文件夹,列表类型i=0print(L2) # 壁纸文件夹url_list = []for l2 in L2:detail_path = path + '\\' + l2L3 = os.listdir(detail_path) # 得到壁纸文件夹路径下的图片,列表类型for l3 in L3:url_list.append(detail_path + '\\' + l3)print(url_list)while True:Windows_img(url_list[i])print('{}'.format(url_list[i]))time.sleep(2) # 设置壁纸更换间隔,这里为10秒,根据用户自身需要自己设置秒数i += 1if i == len(url_list): # 如果是最后一张图片,则重新到第一张i = 0

def changeWallpaper_2():"""文件夹/图片"""path=input('请输入文件路径:')L2=os.listdir(path=path) # 得到文件路径下的图片,列表类型i=0print(L2)while True:Windows_img(path+'\{}'.format(L2[i]))print(path+'\{}'.format(L2[i]))time.sleep(10) # 设置壁纸更换间隔,这里为10秒,根据用户自身需要自己设置秒数i += 1if i==len(L2): # 如果是最后一张图片,则重新到第一张i=0

if __name__ == '__main__':changeWallpaper()

好了,我的这篇文章写到这里就结束啦!

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。