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

爬取效果:

结尾

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

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

相关推荐
2301_818008446 分钟前
MySQL怎样在触发器中引用新旧数据行_NEW与OLD关键字详解
jvm·数据库·python
毕胜客源码1 小时前
卷积神经网络的农作物识别系统(有技术文档)深度学习 图像识别 卷积神经网络 Django python 人工智能
人工智能·python·深度学习·cnn·django
a1117762 小时前
jetpack5.0对应版本的torch和torchvision
python·开源·torch
Where-2 小时前
LangChain核心组件-Tool
python·langchain
angushine2 小时前
Python常用方法
开发语言·前端·python
【 】4232 小时前
pyhon相对导入
开发语言·python
西门大盗2 小时前
pycharm自动进行python 测试(python test)
ide·python·pycharm
Jmayday2 小时前
Pytorch:张量的操作
人工智能·pytorch·python
石榴树下的七彩鱼3 小时前
智能抠图 API 多语言接入实战:从零到上线的 Python / Java / PHP / JS 完整教程(附避坑指南)
java·python·php·智能抠图·api接入·石榴智能·shiliuai
Captain_Data3 小时前
AI 12小时设计CPU完整解析:从219字到RISC-V内核的技术突破
人工智能·python·ai·大模型·芯片设计·risc-v