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()

爬取效果:

结尾

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

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

相关推荐
zhiSiBuYu05172 分钟前
Flask 请求与响应新手实战指南
后端·python·flask
宸津-代码粉碎机7 分钟前
告别手动Jar部署!生产级无损热部署方案,彻底解决OOM与更新失效问题
java·大数据·开发语言·人工智能·python
米码收割机9 分钟前
【移动】线上购物移动端网站(源码+文档)【独一无二】
java·开发语言·前端·python·django
未知违规用户14 分钟前
大模型项目: 学习FastAPI 服务器开发
服务器·人工智能·python·学习·fastapi
想会飞的蒲公英16 分钟前
PyTorch reshape、view、transpose、广播到底怎么选?
人工智能·pytorch·python
卷无止境17 分钟前
Python装饰器:一层糖衣包裹的函数魔法
后端·python
xlrqx20 分钟前
长治家电清洗培训基地如何挑选及行业基本培训标准科普
大数据·python
无敌秋24 分钟前
python/c++/java上云
java·c++·python
卷无止境27 分钟前
Python的Lambda表达式——不起名字的函数也能干大事
后端·python
映翰通朱工30 分钟前
从0到1:EC942边缘计算机用Python实现Modbus TCP采集+MQTT上云全记录(附踩坑实录)
网络·python·网络协议·tcp/ip·二次开发·映翰通