【Python项目】——爬取王者荣耀皮肤
一、项目说明
原作者:尚学堂 李老师
学习视频来源:bilibili——王者荣耀皮肤爬取
注:仅供自学者学习交流使用,侵权联系必删
二、项目知识点
1、必要库:os、requests、lxml
注:若没有安装可以在terminal命令窗口利用pip install requests这样的命令安装。若速度较慢可加上镜像源 -i https://pypi.tuna.tsinghua.edu.cn/simple这样会加快安装速度。
2、向网站服务器发送请求
3、接收回复
4、解析HTNML
5、标头伪装自身
6、保存文件,建立相应英雄文件夹
7、为防止被封,可利用sleep减慢访问和下载速度
三、项目实现代码
import requests
import os
from lxml import etree #解析HTML代码
from time import sleep
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.63'}
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_resp = requests.get(hero_list_url, headers = headers)
#print(hero_list_resp.json())#每个大括号是一个json数据
for h in hero_list_resp.json():
ename = h.get('ename')
cname = h.get('cname')
if not os.path.exists(cname):
os.makedirs(cname)#创建文件夹
#访问英雄主页
hero_info_ur1 = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
hero_info_resp = requests.get(hero_info_ur1, headers = headers)
hero_info_resp.encoding ='gbk'
e = etree.HTML(hero_info_resp.text)
names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]
names = [name[0:name.index('&')] for name in names.split('|')]
for i,n in enumerate(names):
resp = requests.get(f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i+1}.jpg')
with open(f'{cname}/{n}.jpg','wb') as f: #wb为write操作 bytes方式,f为此文件名字
f.write(resp.content)
print(f'已下载:{n}的皮肤')
sleep(1)
四、输出结果展示
只展示了部分文件夹哦!
高清的原图,真时是不要太爽!
总结
遇到挫折,要有勇往直前的信念,马上行动,坚持到底,决不放弃,成功者决不放弃,放弃者绝不会成功。成功的道路上,肯定会有失败;对于失败,我们要正确地看待和对待,不怕失败者,则必成功;怕失败者,则一无是处,会更失败。
小伙伴们注意在练习的时候不要侵权欧!禁止商用!!!!
好了这就是今天的项目练习加学习的全部分享!
我们下次再见!