主要是skin_name
的问题,不规范,有的有该键值对,有的没有;有些第一个是title(伴生皮肤),有的不是。在读取数据时,会比较麻烦。新英雄可能没有skin_name,马超skin_name不存在,如果要取值就会报错。
- 取skin_name键的值之前,先判断是否有这个键。
- 将title和skin_name合成一个列表,然后用集合去重。
如下面示例中:
[
{
"ename": 511,
"cname": "猪八戒",
"title": "无忧猛士",
"new_type": 0,
"hero_type": 3,
"skin_name": "无忧猛士|年年有余"
},
{
"ename": 529,
"cname": "盘古",
"title": "破晓之神",
"new_type": 0,
"hero_type": 1,
"skin_name": "破晓之神"
},
{
"ename": 505,
"cname": "瑶",
"title": "鹿灵守心",
"new_type": 0,
"hero_type": 6,
"skin_name": "森"
},
{
"ename": 506,
"cname": "云中君",
"title": "流云之翼",
"new_type": 0,
"hero_type": 4,
"hero_type2": 1,
"skin_name": "荷鲁斯之眼"
},
{
"ename": 522,
"cname": "曜",
"title": "星辰之子",
"new_type": 0,
"hero_type": 1,
"skin_name": "归虚梦演"
},
{
"ename": 518,
"cname": "马超",
"title": "冷晖之枪",
"new_type": 1,
"hero_type": 1,
"hero_type2": 4
}
]
如:马超已有2个皮肤https://pvp.qq.com/web201605/herodetail/518.shtml,但是json文件里没有进行更新(应该要有skin_name键值的)
{
"ename": 518,
"cname": "马超",
"title": "冷晖之枪",
"new_type": 1,
"hero_type": 1,
"hero_type2": 4
}
这个好像难于解决,除非换另一种爬取方式,不是解析现成的json文件,而且爬取网页元素,这种方式比较麻烦。
英雄的title和skin_name的第一个值不一样,已发现的有109, 113, 176
{
"ename": 109,
"cname": "妲己",
"title": "魅力之狐",
"pay_type": 11,
"new_type": 0,
"hero_type": 2,
"skin_name": "魅惑之狐|女仆咖啡|魅力维加斯|仙境爱丽丝|少女阿狸|热情桑巴"
},
{
"ename": 113,
"cname": "庄周",
"title": "逍遥梦幻",
"new_type": 0,
"hero_type": 6,
"hero_type2": 3,
"skin_name": "逍遥幻梦|鲤鱼之梦|蜃楼王|云端筑梦师"
},
{
"ename": 176,
"cname": "杨玉环",
"title": "霓裳风华",
"new_type": 0,
"hero_type": 2,
"hero_type2": 6,
"skin_name": "风华霓裳|霓裳曲|遇见飞天"
},
只能当做特殊情况进行处理,遇到时,默认取title。
- 数据获取不完整,图片下载也就不能完整,应该是少了。
- 当没有取到skin_name值时,报错。