21-爬取王者荣耀英雄皮肤

目的:把王者荣耀上的皮肤爬取下来

结果呈现:以图片的形式保存到本地

注:这个例子很简单~~~简单的解析网页就可以啦~~~没有反爬虫的问题~~~【PS,这个例子也是我在网上看到的,嗯,,,,,,真的很简单,0基础入门级】

只要找到:(1)存放所有英雄信息的网址:https://pvp.qq.com/web201605/js/herolist.json

(2)每个英雄的图片,比如:https://game.gtimg.cn/images/yxzj/img201606/heroimg/515/515-bigskin-1.jpg

然后就可以爬取啦!!!

【嗯。。。。。。买不起皮肤!就把它下载下来!!!!!!】

【注:直接写的就是面向对象的方式~~~这样至少看起来,,,,,,我有点厉害

#下面为本实例的爬虫代码,若有问题可以给我留言,或者有更好的解决方法也可以私信我~

import requests
import json
import os
class WZRY():
    def __init__(self):
        self.start_url='https://pvp.qq.com/web201605/js/herolist.json'
        self.base_url='https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'
    def get_heros(self):
        headers={'user-agent:Mozilla/5.0'}
        try:
            r = requests.get(self.start_url)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            html=r.text  # json类型数据
            heros_dic = {}
            data = json.loads(html)
            for item in data:
                heros_dic.update({item['ename']: item['cname']})
            return heros_dic
        except Exception as e:
            print(e)
            return False
    def get_hero_img_url(self,item,i):
        hero_img_url=self.base_url+str(item)+'/'+str(item)+'-bigskin-'+str(i)+'.jpg'
        return hero_img_url
    def main(self):
        heros_dic=self.get_heros()
        for item in heros_dic:  #此时的item是键(key),item是int类型
            for i in range(10):  #按照腾讯排版,我目测估计了下,一个英雄最多不会超过10个皮肤
                hero_img_url=self.get_hero_img_url(item,i)
                r=requests.get(hero_img_url)
                if r:
                    path1='./王者荣耀皮肤/'
                    if not os.path.exists(path1):
                        os.makedirs(path1)
                    path2=str(item)+'_'+heros_dic[item]+'_'+str(i)+'.jpg'
                    path=path1+path2
                    with open(path,'wb')as f:
                        f.write(r.content)
                    print('{}下载成功!'.format(heros_dic[item]+str(i)))
                else:
                    continue
wzry=WZRY()
wzry.main()

结果显示:

屏幕:6c046bbe26184cfa819036eca6b8e95eb15.jpg

文件夹:9df40f04a7f40d0cd966e74bdaae2cf76a0.jpg

面向对象爬取完成!

---------(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)----------

注:以后写代码,我应该都是直接写面向对象的形式!【!!!欢迎大家监督!!!

今日爬虫完成!

今日鸡汤:每一天你所付出的代价都比前一天高,因为你的生命又消短了一天。所以每一天你都要更积极。今天太宝贵,不应该为酸苦的忧虑和辛涩的悔恨所销蚀。抬起下巴,抓住今天,因为它不再回来。请珍惜每一寸光阴!

加油ヾ(◍°∇°◍)ノ゙

转载于:https://my.oschina.net/pansy0425/blog/3026976

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值