lbzbky

刷新网页 重新接收所有网页数据

刷新后在Network下会看到所有的数据重新加载出来

找到名为【herolist.json】的json文件(有两个随便选中一个就行

 

看右边会有这个文件的说明 复制这个json文件的URL地址:

浏览器打开一个新窗口将地址粘贴进去,此时浏览器会自动下载【herolist.json】文件

在文件夹中能找到它

打开王者荣耀英雄/皮肤页面,随便选取一个英雄,在显示皮肤图片位置右击选中检查

在元素页面中会有图片的地址:

 skin_url 

 \'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/131/131-bigskin-2.jpg\'
此处,131为json文件中的英雄代码ename的值,2为皮肤skin_name的值用|分割后的索引+1

json文件内容如下:
  

[{

      "ename": 105,
      "cname": "廉颇",
      "title": "正义爆轰",
      "new_type": 0,
      "hero_type": 3,
      "skin_name": "正义爆轰|地狱岩魂"
     }, {
      "ename": 106,
      "cname": "小乔",
      "title": "恋之微风",
      "pay_type": 10,
      "new_type": 0,
      "hero_type": 2,
      "skin_name": "恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽"
     },...

   ]

 

完整代码:

#爬虫 -- 王者荣耀
import os
import urllib
import requests

# 创建存放皮肤的文件夹
if not os.path.exists(\'./skins\'):
os.mkdir(\'./skins\')
headers = {
\'User-Agent\': \'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\',
\'Connection\': \'close\', # 当请求成功后,马上断开该次请求(及时释放请求池中的资源)
}
url = \'http://pvp.qq.com/web201605/js/herolist.json\'
res = requests.get(url=url, headers=headers)
# 返回的是json数据
res_json = res.json()
# 英雄总数
hero_num = len(res_json)
for i in range(hero_num):
hero_name = res_json[i][\'cname\']
# 英雄代码
hero_code = res_json[i][\'ename\']
# 跳过没有皮肤的
if res_json[i].get(\'skin_name\'):
# 皮肤名称列表
skin_list = res_json[i][\'skin_name\'].split(\'|\')
for j in range(len(skin_list)):
# 每个皮肤的存放地址
skin_path = \'./skins/\' + hero_name + \'-\' + skin_list[j] + \'.jpg\'
# 每个皮肤的url地址
skin_url = f\'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_code}/{hero_code}-bigskin-{j + 1}.jpg\'
urllib.request.urlretrieve(url=skin_url, filename=skin_path)
print(hero_name + \' skins download success !\')
print(\'over\')

分类:

技术点:

相关文章: