# 课题:爬取王者荣耀全英雄皮肤图片 |
# requests |
# json |
# 爬虫的一般思路 |
# 1、确定爬取的url路径,headers参数 |
# 2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据 |
# 3、解析数据 -- json模块:把json字符串转化成python可交互的数据类型 |
# 4、保存数据 -- 保存在目标文件夹中 |
import requests |
import json |
import time |
start_time = time.time() # 记录开始时间 |
# 1、确定爬取的url路径,headers参数 |
base_url = 'https://pvp.qq.com/web201605/js/herolist.json' |
headers = { 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36' } |
# 2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据 |
response = requests.get(base_url, headers = headers) |
data_str = response.text # --字符串 |
# print(type(data_str)) |
# 3、解析数据 -- json模块:把json字符串转化成python可交互的数据类型 |
# 3、1 转换数据类型 |
data_list = json.loads(data_str) # --列表 |
# 3、2 数据解析 |
for data in data_list: |
# 提取图片所需参数 |
ename = data[ 'ename' ] # 英雄编号 |
cname = data[ 'cname' ] # 英雄名字 |
try : |
skin_name = data[ 'skin_name' ].split( '|' ) # 切割皮肤的名字,用于计算每个英雄有多少个皮肤 |
except Exception as e: |
print (e) |
# print(ename,cname,skin_name) |
# http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/524/524-bigskin-1.jpg |
# http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/ + 英雄编号 + "/" + 英雄编号-bigskin-皮肤序号 + ".jpg" |
# 构建皮肤数量的循环 |
for skin_num in range ( 1 , len (skin_name) + 1 ): |
skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str (ename) + '/' + str ( |
ename) + '-bigskin-' + str (skin_num) + '.jpg' |
# print(skin_url) |
# 请求图片数据 |
skin_data = requests.get(skin_url, headers = headers).content |
# 4、保存数据 -- 保存在目标文件夹中 |
with open ( 'img\\' + cname + "-" + skin_name[skin_num - 1] + ' .jpg ', ' wb') as f: |
print ( '正在下载皮肤:' , cname + "-" + skin_name[skin_num - 1 ]) |
f.write(skin_data) |
# time.sleep(0.1) |
end_time = time.time() # 记录结束时间 |
all_time = end_time - start_time # 执行时间 |
print ( '共花费时间(单位秒):' , all_time, '秒' ) |
print ( '皮肤图片下载完成。。。。。。' ) |
中级程序员
by: 枫陌寒 发表于:2020-03-22 22:02:19 顶(3) | 踩(1) 回复
失败了
回复评论