lidasha521 发表于 2023-8-2 14:47:40

Python下载王者荣耀全皮肤

```java
# 导入发送请求模块(需命令行安装:pip install requests)
import requests
# 导入解析HTML代码工具(需命令行安装:pip install lxml)
from lxml import etree
# 导入文件处理
import os
# 导入睡眠时间, 预防请求过快导致停封
from time import sleep

# 伪装成浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'}

# 发送请求,获取英雄列表
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_req = requests.get(hero_list_url, headers=headers)

# 循环遍历各个英雄
for h in hero_list_req.json():
    # 英雄编号
    ename = h.get('ename')
    # 英雄名称
    cname = h.get('cname')
    # 如果英雄名称文件夹不存在,则创建
    if not os.path.exists(cname):
      os.makedirs(cname)
    # 发送请求,获取英雄详情(注:此处不使用hero_list_req.json()中的skin_name是因为这里的皮肤不全)
    hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
    hero_info_req = requests.get(hero_info_url, headers=headers)
    # 设置编码方式,否则显示乱码
    hero_info_req.encoding = 'GBK'
    # 解析HTML代码
    e = etree.HTML(hero_info_req.text)
    # 获取该英雄所有皮肤名称: ['惊鸿之笔&0', '修竹墨客&0', '梁祝&53', '天狼绘梦者&19', '神器·万象笔&103']
    names = e.xpath('//ul/@data-imgname')
    # 处理英雄皮肤名称(如果名称中包含&则截取出名称,如果不包含&则直接取): ['惊鸿之笔', '修竹墨客', '梁祝', '天狼绘梦者', '神器·万象笔']
    names = [(name if '&' in name else name) for name in names.split('|')]
    print(f'开始下载[{cname}]皮肤')
    # 循环遍历下载(index: 索引,name:皮肤名称)
    for index, name in enumerate(names):
      # 发送请求,获取英雄皮肤
      hero_skin_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{index + 1}.jpg'
      res = requests.get(hero_skin_url, headers=headers)
      # 图片不存在则下载,{cname}/{name}.jpg可替换成自己想要的路径
      if not os.path.exists(f'{cname}/{name}.jpg'):
            # open:打开文件的意思,没有文件则会创建,{cname}/{name}.jpg:存放图片的路径 wb:w-写,b-byte
            # 解释代码:把图片的内容以byte方式写入到路径为{cname}/{name}.jpg的文件中
            with open(f'{cname}/{name}.jpg', 'wb') as f:
                f.write(res.content)
            print(f'[{cname} => {name}]皮肤已下载完成')
            # 睡眠2秒,防止访问过快导致停封
            sleep(2)
print("王者荣耀全部皮肤已下载完成")
```

!(data/attachment/forum/202308/02/144716m0aaii1a81i0zaa2.png)

hysaoh 发表于 2023-8-2 15:27:02

注释写的不错!!!

i白羽 发表于 2023-8-2 15:30:44

ggnb!!!!!!

王一之 发表于 2023-8-2 15:47:26

有意思

潘钜森 发表于 2023-8-3 14:21:19

{:4_94:}{:4_94:}{:4_94:}
页: [1]
查看完整版本: Python下载王者荣耀全皮肤