Python一键获取所有高清无码王者皮肤图片

前言

突然看到王者荣耀每个英雄的图片很不错,所有就一张一张保存了.

分析

1.打开王者荣耀官方英雄列表
2.分析接口
3.实际操作
4.调整代码
5.开始启动程序

开始

其中中间发现,获取的页面中并没有直接找到图片的地址, 所以先拿到皮肤名称拼接成图片链接,然后真正拿到高清无码皮肤图片

# -*- coding: gbk -*-#

# -------------------------------------------------------
# Name:         WZRYImpageDemo
# Description:  多线程获取王者荣耀所有英雄高清皮肤
# Author:       GMaya
# Date:         2020/4/6 14:56
# -------------------------------------------------------
import threading

import requests, json, re

# 创建会话对象
session = requests.session()

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36',
    'origin': 'https://pvp.qq.com'
}


# 获取所有英雄列表
def get_hero_list():
    # 请求接口
    result = session.get('https://pvp.qq.com/web201605/js/herolist.json', headers=headers)
    # 解析json结果
    resJson = json.loads(result.text)
    for res in resJson:
        # 英雄名称
        cname = res.get('cname')
        # 英雄详情页id
        ename = res.get('ename')
        # 多线程获取详细页
        myThread(cname, ename).start()


# 获取英雄详情页面信息
def get_hero_tail(ename, cname):
    # 请求接口
    result = session.get('https://pvp.qq.com/web201605/herodetail/%s.shtml' % ename, headers=headers)
    result.encoding = 'gbk'
    zz = """
    """ # 由于爬取的页面和网页上看到的实际效果不一致,所以这里拿取所有皮肤名称,直接去皮肤服务器拿取 res_tail = re.findall(zz, result.text)[0] res_tail_list = res_tail.split('|') count = 1 for tail in res_tail_list: imgName = cname + '-' + tail # 下载具体图片 get_hero_skin(ename, count, imgName) count += 1 # 保存下载图片 def get_hero_skin(ename, i, imgName): url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/%s/%s-bigskin-%d.jpg" % (ename, ename, i) # 拼接最后的图片地址,然后保存 res_skin = session.get(url) file = 'D:\download\爬虫图片目录\王者荣耀图片\%s.jpg' % imgName # wb : 以二进制格式打开一个文件只用于写入。一般用于非文本文件如图片等。 with open(file, 'wb') as f: f.write(res_skin.content) # 创建线程类 class myThread(threading.Thread): def __init__(self, cname, ename): threading.Thread.__init__(self) self.cname = cname self.ename = ename def run(self): print("开始线程:" + self.cname) try: get_hero_tail(self.ename, self.cname) except Exception: print('线程出现意外....' + self.name) print("退出线程:" + self.cname) if __name__ == '__main__': # 开始 get_hero_list()

也没有具体的计算, 这三百多个将近四百个, 其中包含英雄本身的图片,所以真正的皮肤应该是200多个.应该是全了.说实话,300kb左右的图片, 已经很清楚了

Python一键获取所有高清无码王者皮肤图片_第1张图片

你可能感兴趣的:(Python)