欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python爬取王者荣耀全英雄全皮肤图片

程序员文章站 2023-11-29 11:37:40
先上效果图附上源码import requestsimport pprintimport os# 1. 分析目标网页,确定爬取的url路径base_url = 'https://pvp.qq.com/web201605/js/herolist.json'# herders请求字段,为的是模拟用户的请求headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, li...

先上效果图

Python爬取王者荣耀全英雄全皮肤图片

附上源码

import requests
import pprint
import os
# 1. 分析目标网页,确定爬取的url路径
base_url = 'https://pvp.qq.com/web201605/js/herolist.json'
# herders请求字段,为的是模拟用户的请求
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
    # user-agent是用户身份的标识,它包含浏览器的名称,版本,操作系统信息,浏览器内核信息
    # user-agent是最常见、最起码的反爬字段,可以很好地把我们的代码伪装成浏览器用户
}
# 2. 发送请求 --- requests 模拟浏览器发送请求,获取响应数据
response = requests.get(url=base_url,headers=headers)
data_list = response.json()
#pprint.pprint(data_list)

# 3. 解析数据 --- json模块:把json字符串转化成python可交互数据类型
for data in data_list:
    heroName = data['cname'] #英雄名称
    heroId = data['ename'] #英雄的id值
    try:
        heroSkinList = data['skin_name'].split('|') #英雄的所有皮肤名称
    except Exception as e:
        #print(e)
        # 手动为我们的马超添加skin_name
        heroSkinList = ['冷晖之枪','幸存者'] # 注意原皮肤在前
    print(heroName,heroId,heroSkinList)
    # 构建皮肤数量的循环
    for skin in range(1,len(heroSkinList) + 1):
        # http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/英雄的id值/英雄的id值-bigskin-皮肤编号.jpg
        img_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(heroId)+'/'+str(heroId)+'-bigskin-'+str(skin)+'.jpg'
        #print(img_url)
        #请求图片数据,因为它是一个二进制数据,所以我们需要调用content获取
        img_data = requests.get(url=img_url,headers=headers).content
        # 4. 保存数据 --- 保存在目标文件夹中
        path = '王者荣耀'
        if not os.path.exists(path):
            os.mkdir(path)
        with open('王者荣耀\\'+heroName+"-"+heroSkinList[skin-1]+".jpg",mode='wb') as f:
            print("正在下载皮肤:",heroName+"-"+heroSkinList[skin-1])
            f.write(img_data)
            f.close()

创作不易,点个赞吧!!

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://blog.csdn.net/wsad861512140

本文地址:https://blog.csdn.net/wsad861512140/article/details/107062159