爬取极简壁纸

js反编译的代码需要解密之类的,直接给我干蒙圈了,借助selenium可以直接获取到调式工具中的源码,可以获取渲染后的链接,然后将链接交给下载函数(使用异步提高效率)即可。

后续学习完js反编译的话,我会再写一篇教学,介绍js反编译爬取。

主要还是,获取当前页面之后,找到按钮点击下一次,如果下载过程中出现验证码的话,可以加一个判断,使用超级鹰或者是图鉴的python脚本,就可以通过验证了,但是每次验证是需要消耗题分。如果不想花钱的可以找一个训练成功的模型下载使用。

很良心的网站,希望大家合理获取,做一个守法的爬虫。

代码:

python 复制代码
import time
from selenium import webdriver
import asyncio
import aiofiles
import aiohttp

headers = {
    'Referer': 'https://bz.zzzmh.cn/',
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
async def download(href,count):
    print(f"第{count}图片开始缓存")
    try:
        async with aiohttp.ClientSession() as session:
            async with session.get(href,headers=headers) as p:
                data = await p.read()
                async with aiofiles.open(f"D:\桌面\pythoncode\爬虫案例\Selenium入门\极简壁纸\{count}.jpg",'wb') as file:
                    await file.write(data)
                print(f"第{count}图片缓存成功")
    except:
        print(f"第{count}图片缓存失败")


async def main():
    print("选择下载多少页的壁纸")
    a = int(input())
    web = webdriver.Chrome()
    web.get("https://bz.zzzmh.cn/index")
    time.sleep(3)
    task = []
    count = 1
    for k in range(a):
        img_List=(web.find_elements(by="xpath",value='//div[@class="img-box"]'))
        next = web.find_element(by="xpath",value='//div[@class="vue_pagination_group"]/div[@class="vue_pagination_next vue_pagination_item"]')
        for i in img_List:
            src = i.find_element(by="xpath",value='./span[@class="down-span"]/a')
            src= src.get_attribute('href')
            print(src)
            t = asyncio.create_task(download(src,count))
            task.append(t)
            count+=1
        if k!=a-1:
            next.click()
        time.sleep(3)    
    return await asyncio.wait(task)
if __name__=="__main__":
    asyncio.run(main())

效果:

相关推荐
大模型铲屎官3 分钟前
【Python-Day 16】代码复用基石:详解 Python 函数的定义与调用
开发语言·人工智能·pytorch·python·深度学习·大模型·函数
从零开始学习人工智能10 分钟前
深入解析异步编程:Java NIO、Python `async/await` 与 C# `async/await` 的对比
java·python·nio
love530love14 分钟前
【笔记】PyCharm 中创建Poetry解释器
运维·人工智能·windows·笔记·python·pycharm·conda
黑牛先生23 分钟前
vscode连接本地Ubuntu
linux·运维·ubuntu
Lilith的AI学习日记1 小时前
【AI面试秘籍】| 第17期:MoE并行策略面试全攻略:从理论到调参的降维打击指南
人工智能·python·面试·职场和发展·llama
网硕互联的小客服1 小时前
为什么服务器突然变慢?从硬件到软件的排查方法
linux·运维·网络·安全
搏博2 小时前
无人机集成毫米波雷达与双目视觉的融合感知系统深度解析
python·深度学习·学习·机器学习·动态规划·无人机
兔兔爱学习兔兔爱学习2 小时前
什么是 Agent 的 Message
人工智能·python
兔兔爱学习兔兔爱学习2 小时前
Memory模块是agent的一个关键组件
人工智能·python
学渣676562 小时前
mac的Cli为什么输入python3才有用python --version显示无效,pyenv入门笔记,如何查看mac自带的标准库模块
笔记·python·macos