复制代码注意修改图片下载地址
import requests
import os
from time import sleep
from lxml import etree # 解析html的库
# 1、寻找url
headers = {'Users-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)\
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.42'} # 伪装成浏览器
# 2、访问单个英雄所有皮肤获取ename、cname
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_resp = requests.get(hero_list_url, headers=headers)
# 3、循环遍历所有英雄皮肤并保存
for h in hero_list_resp.json():
ename = h.get('ename') # get:返回字典关键字key对应的值value
cname = h.get('cname')
# 创建以英雄名为名字的文件夹
if not os.path.exists(f'E:/code_python/王者荣耀/{cname}'):
os.makedirs(f'E:/code_python/王者荣耀/{cname}')
# 访问单个英雄主页
hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
hero_info_resp = requests.get(hero_info_url, headers=headers)
hero_info_resp.encoding = 'gbk'
# 获取皮肤名
e = etree.HTML(hero_info_resp.text)
names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]
names = [name[0:name.index('&')] for name in names.split('|')]
for i, n in enumerate(names): # 皮肤下载
resp = requests.get(f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}'
f'-bigskin-{i + 1}.jpg', headers=headers)
with open(f'E:/code_python/王者荣耀/{cname}/{n}.jpg', 'wb') as f:
f.write(resp.content)
print(f"已下载{n}的皮肤")
sleep(2) # 模拟人为下载防止服务器反爬
本文章使用limfx的vscode插件快速发布