初次爬虫——王者荣耀全英雄皮肤爬取

最近在学习爬虫,虽然初涉不深,但想找些简单的例子来尝试,看见网上有爬取王者荣耀皮肤的例子,对于王者迷来说,这是一个不能抵制的诱惑,所以借鉴了别人的程序加上自己的见解写下爬取程序,也写下这篇博客记录一下自己初次的成果。

想要爬取图片,就要有该图片的地址,这里我们去王者荣耀官方的的网站去查询能爬取皮肤地址,这里给出链接:https://pvp.qq.com/,然后我们可以找到这个位置:在这里插入图片描述
再点击那个更多,即可进入英雄皮肤的界面:
在这里插入图片描述
这里我是用的是谷歌浏览器,我们可以点击鼠标右键的检查或者是F12键,调处网页的代码,我们再调处Network的界面,在这里插入图片描述
对于没有出现herolist.json的,可以刷新页面,在这里插入图片描述
我们随意点开两个json的文件中的一个,然后查看它headers下的url地址,复制它的url地址,然后写下如下代码:

import requests
url = 'https://pvp.qq.com/web201605/js/herolist.json'
response = requests.get(url)
#向url对应的服务器发送对应的get请求,然后获得对应的响应,response中包含
#服务器返回的相应的资源
heroList_json = response.json()
#转为json的格式
print(len(heroList_json))
#英雄总数量
print(heroList_json)
#打印结果

我们运行看结果:
在这里插入图片描述
英雄101个,这是正确的,爬取的目标没有错,然后提取的资源的json的格式也在结果中看得到,就包括ename:英雄编号,cname:英雄名称,skin_name:皮肤名称。

我们再找到皮肤的地址,比如http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/533/533-bigskin-2.jpg,我们查询可以发现皮肤的地址的前缀基本一样,就是http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/,533就是图片的英雄编号,bigskin是共有的,而数字2就是该英雄所拥有的第几个皮肤,知道地址的组成结构,我们就可以写出代码:

import os

hero_dir='D:\spider\photo' 
if not os.path.exists(hero_dir):
	os.mkdir(hero_dir)
#创建存储的文件,判断是否存在,不存在就创建,自己可以更改
for m in range(len(heroList_json)):
    hero_num = heroList_json[m]['ename']
    #获取英雄编号
    hero_name = heroList_json[m]['cname']
    #获取英雄名称
    skin_names = heroList_json[m]['skin_name'].split('|')
    #根据皮肤名分割成皮肤列表
    number = len(skin_names)
    #皮肤数量
    for i in range(1,number+1):
        #遍历每一个图片网址
        url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'
        url_photo = url + str(hero_num) + '/' +str(hero_num) + '-bigskin-' +str(i) + '.jpg'
        photo = requests.get(url_photo).content
        #获取图片
        with open('photo/'+str(hero_name)+'-'+str(skin_names[i-1])+'.jpg','wb') as f:
            f.write(photo)
            #创建文件并写入文件

整理两段代码点击运行,在相应的photo文件中会出现图片,来放图片:在这里插入图片描述
在这里插入图片描述
当然网上说可以加入多进程下载爬取,目前还不会,相信日后可以掌握这门技巧,也希望这篇博客可以给大家带来热趣。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值