目的:把王者荣耀上的皮肤爬取下来
结果呈现:以图片的形式保存到本地
注:这个例子很简单~~~简单的解析网页就可以啦~~~没有反爬虫的问题~~~【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()
结果显示:
文件夹:
面向对象爬取完成!
---------(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)----------
注:以后写代码,我应该都是直接写面向对象的形式!【!!!欢迎大家监督!!!】
今日爬虫完成!
今日鸡汤:每一天你所付出的代价都比前一天高,因为你的生命又消短了一天。所以每一天你都要更积极。今天太宝贵,不应该为酸苦的忧虑和辛涩的悔恨所销蚀。抬起下巴,抓住今天,因为它不再回来。请珍惜每一寸光阴!
加油ヾ(◍°∇°◍)ノ゙