Python代码爬取王者荣耀全英雄皮肤

Python代码爬取王者荣耀全英雄皮肤

引言

王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,使用Python代码即可完成。

准备工作

爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 王者荣耀官方网站-腾讯游戏 (qq.com)

代码实现

首先我们创建一个Python文件,然后导入os和requests模块。

python 复制代码
from queue import Queue
from urllib import parse,request
from Reptile import Requests
import os # 创建文件夹模块
import threading
q = Queue(22)

url = 'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi'

def url_json_get(p):  # 获取图片url
    data = f'''
            activityId: 2735
            sVerifyCode: ABCD
            sDataType: JSON
            iListNum: 20
            totalpage: 0
            page: {p}
            iOrder: 0
            iSortNumClose: 1
            iAMSActivityId: 51991
            _everyRead: true
            iTypeId: 2
            iFlowId: 267733
            iActId: 2735
            iModuleId: 2735
            _: 1663592877298
            '''
    html = Requests.Requests.get(url, params=data)
    for i in html.json()['List']:
        image_name = i['sProdName']  # 获取名字
        image_name = parse.unquote(image_name)  # 解析名称
        for j in range(2, 9):  # 获取2-8的图片链接
            url_data = parse.unquote(i[f'sProdImgNo_{j}']).replace('jpg/200', 'jpg/0')  # 解析网址
            q.put([image_name, url_data]) # 放置到队列中
            print(image_name, url_data)


def save_image():
    while True:  # 一直拿数据
        print(f'目前队列数量{q.qsize()}')
        try:
            data = q.get(timeout=15)  # 获取队列中的一个数据
        except q.queue.Empty:
            break
        path = os.path.join('王者荣耀图片', data[0])  # 创建文件夹
        try:
            os.makedirs(path)
        except:
            pass
        path = os.path.join(path, data[1].split('/')[-2])
        # 拼接文件名称和文件夹路径
        request.urlretrieve(data[1],path) #保存
        print(f"{data[1].split('/')[-2]}保存成功")
        # 图片保存的位置和名称


for page in range(10):  # 生产者 30个 一个人负责一个页面
    t = threading.Thread(target=url_json_get, args=(page,))
    t.start()

for page in range(20):  # 20个消费者 用来保存图片
    t = threading.Thread(target=save_image)
    t.start()

爬取效果:

结尾

爬虫是非常有趣的,因为它非常直观,视觉冲击感强,写出来也很有成就感,爬虫虽然强大,但千万不能随意爬取隐私信息。

最后,如果对文中程序有更好的建议,欢迎评论区留言。

相关推荐
程序大视界34 分钟前
【Python系列课程】Python正则表达式(下):环视、命名分组与日志实战
开发语言·python·正则表达式
TickDB44 分钟前
美股行情 API 接入避坑:REST 快照、WebSocket 推送、盘前盘后数据的边界
人工智能·python·websocket·行情数据 api
枫叶v.1 小时前
Agent 分层存储架构设计:从记忆方法到中间件选型
开发语言·python
水兵没月1 小时前
逆向实战小记——某ToB商城网站分析学习
python·网络爬虫
程序员小远2 小时前
Python自动化测试框架及工具详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
sleven fung2 小时前
MinerU与BabelDOC与KTransformers与OpenAI API库
开发语言·python·ai·langchain
小毛驴8503 小时前
spring-boot-maven-plugin,maven-compiler-plugin 功能对比
java·python·maven
萤萤七悬3 小时前
【Python笔记】AI帮实现CLI工具-使用argparse.ArgumentParser接收命令参数
开发语言·笔记·python
郑洁文4 小时前
基于Python的Web命令执行漏洞自动化检测系统
前端·python·网络安全·自动化
深蓝电商API4 小时前
大模型 + 爬虫 = ?我用 AI 做了一个自适应反反爬引擎
人工智能·爬虫