-
下载 Fiddler 或其他抓包软件
如果用的 Fiddler 可以参考 小白通过Fiddler爬取手机app的数据并提取出来(详细版)_王者营地抓包-CSDN博客 中 Fiddler 的配置。
-
配置完后,打开 QQ 小程序-王者营地(微信小程序和王者营地 APP 已经均无法轻易爬取)
-
找到这个玩意
-
复制这一条,并保存,文件打开后如图中记事本
-
处理 json 数据,可以先在这上面看下大概的数据结构
JSON在线解析及格式化验证 — JSON.cn -
简而言之,对 json 文件运行以下代码
import csv import codecs import json import os from urllib.request import urlretrieve # 检查目录是否存在,如果不存在则创建 icon_dir = './heroIcon/' if not os.path.exists(icon_dir): os.makedirs(icon_dir) # 数据文本的命名 file_name = 'wangzhedata.csv' # 文件的保存路径 path = file_name # 指定编码为 utf-8, 避免写 csv 文件出现中文乱码 with codecs.open(path, 'w', 'utf-8') as csvfile: # 在创建wangzhedata.csv文件后,设立他们的首行表头 filednames = ['英雄ID', '英雄名', '英雄职业', '热度', '胜率', '登场率', 'Ban率', '头像链接', 'jumpurl'] writer = csv.DictWriter(csvfile, fieldnames=filednames) writer.writeheader() # 读取json文件内容,返回字典格式 with open(r'E:\code\wangzhe_database\top.json', 'r', encoding='utf8')as fp: # 加载json文件,解码规格化 json_data = json.load(fp) # 加载完后,它为dict,这点需要我们来分析(dict、list类型) hero_list = json_data['data']['list'] for i in hero_list: heroInfo = i['heroInfo'] heroId = heroInfo['heroId'] heroName = heroInfo['heroName'] heroIcon = heroInfo['heroIcon'] # 这里是下载我们英雄的图标 image_path = './heroIcon/' + heroName + '.jpg' if not os.path.exists(image_path): urlretrieve(heroIcon, image_path) jumpUrl = heroInfo['jumpUrl'] heroCareer = heroInfo['heroCareer'] winRate = i['winRate'] banRate = i['banRate'] showRate = i['showRate'] tRank = i['tRank'] try: # 将每次取出的英雄属性进行一行一行的写入 writer.writerow({'英雄ID': heroId, '英雄名': heroName, '英雄职业': heroCareer, '热度': tRank, '胜率': winRate, '登场率': showRate, 'Ban率': banRate, '头像链接': heroIcon, 'jumpurl': jumpUrl}) except UnicodeEncodeError as e: print(f"编码错误, 该数据无法写到文件中, 直接忽略该数据: {e}") print( f"问题数据: {heroId}, {heroName}, {heroCareer}, {tRank}, {winRate}, {showRate}, {banRate}, {heroIcon}, {jumpUrl}") # 关闭 CSV 文件 csvfile.close()
-
此时 csv 的编码格式为
utf8
,直接通过 excel 打开会出现乱码。可以通过用记事本打开,另存为ANSI
到此完成~