王者荣耀皮肤高清海报爬取-----无须网页源码解析

爬取思路:
一、获取json文件
打开王者荣耀官方网站,进入英雄资料页(https://pvp.qq.com/web201605/herolist.shtml),用浏览器查找到下面文件,里面包含王者英雄得相关参数(ID,名字,皮肤数等)

在这里插入图片描述

二、分析析大海报得网址
通过分析网址发现图片地址是由id和序列号(与皮肤数量相关)拼接,同时都是以.jpg结尾,因此只要通过解析上面得到得json然后拼接成新的网址就能得到要请求得图片

在这里插入图片描述
三、把请求得图片保存
通过请求得到图片得二进制数据,然后拼接好文件名,通过二进制写入

import json
import requests
# https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/524/524-bigskin-1.jpg
class king_img():
    def __init__(self):
        self.url = 'https://pvp.qq.com/web201605/js/herolist.json'
        self.data_list = []

    def re_web(self):
        res = requests.get(self.url)
        text = res.json()
        aa = json.dumps(text)
        tt = json.loads(aa)
        for i in tt:
            print(i)
            self.data = {}
            self.data['id'] = i['ename']
            self.data['name'] = i['cname']
            try:
                self.data['num'] = len(i['skin_name'].split('|')) + 1
            except:
                continue
            self.data_list.append(self.data)

    def get_img(self):

        for i in self.data_list:

            for j in range(0, i['num']):
                id = i['id']
                name = i['name']
                try:
                    url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{id}/{id}-bigskin-{j + 1}.jpg'
                    print(url)
                    print(name)
                    res = requests.get(url)
                    print(res.status_code)
                    if not res.status_code == 200:
                        continue
                    img = res.content
                    with open('皮肤//%s%d.jpg' % (name, j + 1), 'wb') as f:
                        f.write(img)
                except:
                    continue
if __name__ == '__main__':
    ki = king_img()
    ki.re_web()
    ki.get_img()

效果展示
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值