相信很多小伙伴们都喜欢玩王者荣耀这款MOBA手游吧,博主也非常喜欢玩这款手游,今天我就来教会大家如何用爬虫爬取王者荣耀英雄的相关皮肤图片。
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
import requests # URL请求库,向网页发起请求
在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。
在本爬虫中URL:https://pvp.qq.com/王者荣耀官网
我们写这个爬虫目的是爬取皮肤,为此我们需要在王者荣耀官网上找到英雄皮肤的数据包。那么如何找到这个数据包呢?
这就要用到键盘上的一个功能键【F12】,即开发者工具。(或者在网页上右键–>检查)
图片所示的herolist.json文件即是我们要找的数据包。我们可以先下载这个json文件看看其内容。
[{
"ename": 105,
"cname": "廉颇",
"title": "正义爆轰",
"new_type": 0,
"hero_type": 3,
"skin_name": "正义爆轰|地狱岩魂"
}, {
"ename": 106,
"cname": "小乔",
"title": "恋之微风",
"new_type": 0,
"hero_type": 2,
"skin_name": "恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽"
},{
...
},{
"ename": 528,
"cname": "澜",
"title": "鲨之猎刃",
"new_type": 0,
"hero_type": 4,
"skin_name": "鲨之猎刃"
},{
"ename": 537,
"cname": "司空震",
"title": "雷霆之王",
"new_type": 1,
"hero_type": 1,
"hero_type2": 2,
"skin_name": "雷霆之王"}]
可以看到英雄的cname,ename以及skin_name,这对我们后续写爬虫有用
# 爬取王者荣耀全皮肤高清图片
import requests
url = 'https://pvp.qq.com/web201605/js/herolist.json'
response = requests.get(url).json()
# print(response)
for i in range(len(response)):
ename = response[i]['ename']
cname = response[i]['cname']
title = response[i]['title']
if response[i]['skin_name'] is None:
print(ename,cname,title)
else:
skin_name = response[i]['skin_name'].split('|')
print(ename,cname,title,skin_name)
for i in range(1,len(skin_name)+1):
img_url = 'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg'.format(ename,ename,i)
picture = requests.get(img_url).content
with open('F:/clawer/hero_skins/'+cname+skin_name[i-1]+'.jpg','wb')as f:
f.write(picture)
print('正在下载'+skin_name[i-1]+'皮肤')