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

前言

嗨喽,大家好,这里是魔王~
请添加图片描述

[课题]:

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

[课题介绍]:

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

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

包括汽车,植物,动物,手机,美女,创意设计,摄影,旅游,以及绿色保护眼睛的壁纸等等
在这里插入图片描述
今天通过Python程序,采集上面大量的壁纸

[课程亮点]:

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

[环境]:

python3.8
pycharm2021.2
requests
parsel

+python安装包 安装教程视频 anaconda等等 安装包
+pycharm社区版 专业版 及 激活码私我免费获取

爬虫基本思路:

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

“”"
请添加图片描述

导入模块

import requests
import re
import parsel
import os

爬取图片代码

for page in range(1, 11):
    print(f'-------------------------------------正在爬取第{page}页-------------------------------------')
# 1. 通过requests发送网络请求 获取到数据
    html_data = requests.get(f'https://mm.enterdesk.com/{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 win32api
import win32con
import win32gui
import os
import 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=0
    print(L2)   # 壁纸文件夹
    url_list = []
    for l2 in L2:
        detail_path = path + '\\' + l2
        L3 = 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 += 1
        if i == len(url_list):  # 如果是最后一张图片,则重新到第一张
            i = 0
def changeWallpaper_2():
    """文件夹/图片"""
    path=input('请输入文件路径:')
    L2=os.listdir(path=path)  # 得到文件路径下的图片,列表类型
    i=0
    print(L2)
    while True:
        Windows_img(path+'\{}'.format(L2[i]))
        print(path+'\{}'.format(L2[i]))
        time.sleep(10)  # 设置壁纸更换间隔,这里为10秒,根据用户自身需要自己设置秒数
        i += 1
        if i==len(L2):  # 如果是最后一张图片,则重新到第一张
            i=0
if __name__ == '__main__':
    changeWallpaper()

在这里插入图片描述

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

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值