用Python爬取王者荣耀英雄皮肤海报图
发表于更新于
字数总计:697阅读时长:2分钟阅读量: 武汉
介绍
在某平台公开课上学了怎么用python爬取王者的全英雄皮肤海报图,然后自己敲了一遍,发现还不错,把图片全部都爬取下来了,本来想用来做壁纸,但是一看,实在太丑,然后。。然后就不知道这些图片能干啥了。现在就来分享一些爬取王者海报图的思路。
思路
1,确定爬取的url路径
2,发送请求,一般需要模拟浏览器发送,需要用到 requests
3,解析数据,需要用json模块,json模块可以把json字符串转换换成Python可交互的数据
4,保存数据
开始
第一步
确定爬取的url路径
1 2
| #在王者官网打开检查 base_url = 'https://pvp.qq.com/web201605/js/herolist.json'
|
第二步
模拟浏览器发送请求 这里要用到requests 获取响应数据
1 2
| response = requests.get(base_url) data_str = response.text
|
第三步
解析数据,要用到json模块,json模块可以把 json字符串转化成python可交互的数据类型,
1,转换数据类型
1
| data_list = json.loads(data_str)
|
2,解析数据
1 2 3 4 5 6 7 8 9 10 11 12 13
| for data in data_list: ename = data['ename'] cname = data['cname'] try: skin_name = data['skin_name'].split('|') except Exception as e: print(e)
|
3,构建皮肤数量循环(使用for循环)
1 2 3
| 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'
|
4,请求图片数据
1
| skin_data = requests.get(skin_url).content
|
第四步
保存数据
1 2 3
| with open('img\\' + cname + "-" + skin_name[skin_num - 1] + '.jpg', 'wb') as f: print('正在下载皮肤:', cname + "-" + skin_name[skin_num - 1]) f.write(skin_data)
|
到这里就差不多结束了
完整代码
下面是一个完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| base_url = 'https://pvp.qq.com/web201605/js/herolist.json' response = requests.get(base_url) data_str = response.text data_list = json.loads(data_str) for data in data_list: ename = data['ename'] cname = data['cname'] try: skin_name = data['skin_name'].split('|') except Exception as e: print(e) 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' skin_data = requests.get(skin_url).content with open('img\\' + cname + "-" + skin_name[skin_num - 1] + '.jpg', 'wb') as f: print('正在下载皮肤:', cname + "-" + skin_name[skin_num - 1]) f.write(skin_data)
|
注意:要在目录下新建一个img的文件夹
转送门