[python]代码库
# 课题:爬取王者荣耀全英雄皮肤图片
# 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) 回复
失败了
回复评论