Python爬取王者荣耀英雄皮肤高清图片

news/2024/4/20 10:17:17/

前言

临下班前,看到群里有人在讨论用王者农药的一些皮肤作为电脑的壁纸,什么高清的,什么像素稍低的,网上查了一手,也有,但像素都不一样,所以,我就想着,自己去官网直接爬他的高清皮肤就好了,然后就有了这边文章说的主题了。

爬图思路

找到英雄列表

进入官网,然后进入英雄介绍,查看更多英雄,就能看到全部的英雄了,也就是下面的这个链接

英雄列表:https://pvp.qq.com/web201605/herolist.shtml

hero-img

英雄详情

点击每个英雄进来,就可以看到每个英雄的详细信息,基本介绍以及皮肤展示,而我们需要爬取的皮肤,就在右下角那里,鼠标放上去,就可以逐个展示该皮肤了

小鲁班的详细信息:https://pvp.qq.com/web201605/herodetail/112.shtml

detail-img

分析皮肤图片URL

从上面的这张鲁班的图片中我们可以看到,通过F12定位到皮肤的小图片位置,li元素里有一个img的元素,其中img的src和data-imgname这两个属性,查看一下,就不难知道,src的属性值是小图,而data-imgname则是我们需要的大图URL,但是查看源码,就会发现,在html中,并没有这个属性,所以,需要我们分析这个URL的规律来得到其他英雄的皮肤图片,分析也不难发现,112就是英雄的id,而bigskin-2里面的2即表示这个英雄的第几张皮肤图片

开始编写爬虫脚本

第一步:定义一些常用变量

第二步:抓取所有英雄列表

第三步:循环遍历,分析每个英雄皮肤节点

第四步:下载图片

第五步:爬虫结束

完整源码

感觉上面七七八八的,说了些啥呀,真是墨迹,还不如直接上代码实在,好吧,我错了,马上交出源码,请各位看官饶恕,同时,代码我也上传了交友网站GitHub。

#!/usr/bin/env python
# -*- coding: utf-8 -*-"""
抓取王者荣耀皮肤
author: gxcuizy
date: 2018-11-06
"""import requests
from bs4 import BeautifulSoup
from urllib import parse
import osclass Skin(object):def __init__(self):# 英雄的json数据self.hero_url = 'https://pvp.qq.com/web201605/js/herolist.json'# 英雄详细页的通用url前缀信息self.base_url = 'https://pvp.qq.com/web201605/herodetail/'# 英雄详细页url后缀信息self.detail_url = ''# 图片存储文件夹self.img_folder = 'skin'# 图片url的通用前缀self.skin_url = 'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'# 图片url的后缀信息self.skin_detail_url = ''def get_hero(self):"""获取英雄的json数据"""request = requests.get(self.hero_url)hero_list = request.json()return hero_listdef get_hero_skin(self, hero_name, hero_no):"""获取详细页英雄皮肤展示的信息,并爬图"""url = parse.urljoin(self.base_url, self.detail_url)request = requests.get(url)request.encoding = 'gbk'html = request.text# 获取皮肤信息的节点soup = BeautifulSoup(html, 'lxml')skip_list = soup.select('.pic-pf-list3')for skin_info in skip_list:# 获取皮肤名称img_names = skin_info.attrs['data-imgname']name_list = img_names.split('|')skin_no = 1# 循环下载皮肤图片for skin_name in name_list:self.skin_detail_url = '%s/%s-bigskin-%s.jpg' % (hero_no, hero_no, skin_no)skin_no += 1img_name = hero_name + '-' + skin_name + '.jpg'self.download_skin(img_name)def download_skin(self, img_name):"""下载皮肤图片"""img_url = parse.urljoin(self.skin_url, self.skin_detail_url)request = requests.get(img_url)if request.status_code == 200:print('download-%s' % img_name)img_path = os.path.join(self.img_folder, img_name)with open(img_path, 'wb') as img:img.write(request.content)else:print('img error!')def make_folder(self):"""创建图片存储文件夹"""if not os.path.exists(self.img_folder):os.mkdir(self.img_folder)def run(self):"""脚本执行入口"""self.make_folder()hero_list = self.get_hero()for hero in hero_list:hero_no = str(hero['ename'])self.detail_url = hero_no + '.shtml'hero_name = hero['cname']self.get_hero_skin(hero_name, hero_no)# 程序执行入口
if __name__ == '__main__':skin = Skin()skin.run()

最后

其实思路就是这么简单,当然了,如果有其他思路以及想法的,欢迎留言交流。额,差点忘了,大家有兴趣的,可以尝试一下爬取英雄联盟的所有英雄皮肤高清图片,有其他任何问题,也欢迎留言和交流。


http://www.ppmy.cn/news/432463.html

相关文章

手把手教你使用python获取王者荣耀英雄及皮肤高清图片

利用requests库和os库,大概30行代码,就能把页面上的图片给爬取下来! 打开百度搜索“王者荣耀”进入官网:https://pvp.qq.com/,按F12进入调试界面,然后按F5刷新界面,图中标识的herolist.json文件…

如何爬取王者荣耀高清壁纸(详细分析教程)

1、准备工作 Python 3.7 Python安装有requests模块 王者荣耀官网地址:https://pvp.qq.com/web201605/wallpaper.shtml### 2、网站分析 由于现在的电脑分辨率基本都是1920x1080,所以这里以此分辨率作为例子 2.1、首先我们分析同一图片,不同分辨…

teleport堡垒机的一些问题

teleport文件下载,将teleport服务映射到公网,权限已经分派好了,但无法ssh,这是什么原因呢? 注意teleport助手的版本要跟部署的是一致的,否则会检测不到状态 出现下面的问题,应该还是在防火墙的端…

C++ 设计模式学习

文章目录 1、设计原则1.1、依赖原则1.2、开放封闭1.3、面向接口1.4、封装变化点1.5、单一职责1.6、里氏替换1.7、接口隔离1.8、组合优于继承 2、模板方法2.1、定义2.2、背景2.3、要点2.4、没使用设计模式实现2.5、使用设计模式实现 3、观察者模式3.1、定义3.2、背景3.3、要点3.…

PSINS工具箱学习(一)下载安装初始化、SINS-GPS组合导航仿真、习惯约定与常用变量符号、数据导入转换、绘图显示

文章目录 一、前言二、相关资源三、下载安装初始化1、下载PSINSyymmdd.rar工具箱文件2、解压文件3、初始化4、启动工具箱导览 四、习惯约定与常用变量符号1、PSINS全局变量结构体 glv2、坐标系定义3、姿态阵/姿态四元数/欧拉角 Cnb/qnb/att4、IMU采样数据 imu5、AVP导航参数 av…

Debezium系列之:源数据库更新数据,记录数据发生改变的字段和数据不发生改变的字段

Debezium系列之:源数据库更新数据,记录数据发生改变的字段和数据不发生改变的字段 一、需求背景二、实现的效果三、核心参数四、创建表五、完整connector配置六、查看debezium connector状态七、插入和更新数据八、总结和延展一、需求背景 源数据库更新数据需要记录数据发生改…

浏览器被2345劫持了怎么搞

起因我下载了某些修改东西,然后就被2345篡改了浏览器的数据。我是在虚拟机里下载的,但是虚拟机其实也是物理机的一部分,实际上下载的还是到了物理机里面,于是浏览器打开就变成了2345的导航页面 1 解决方案: 浏览器主页…

Session和Cookie,你真的弄清了吗?

Session和Cookie Session和Cookie Session和Cookiecookiecookie的生命周期cookie作用域 Sessionsession的生命周期session作用域 cookie和session安全性 为什么需要cookie和session?在web系统发展变迁时,web发展时随着需求的不断增多,交互的存…

2022.1.22-参加YMO青少年奥林匹克数学竞赛总决赛(金牌)

今天下午Jensen参加了今年的YMO青少年奥林匹克数学竞赛总决赛,题目好像不简单,反正分数比去年六年级时低,而且六年级得到的才是一个银牌。所以,基本预计今年能得一个银牌也就不错了。 PS:1月29日,收到金牌…

话说最有价值的投资

复盘自己 蓦然回首,发现,只有自己混得差劲,只是自己在转圈,虽然经历了很多同龄人不该经历的,但是还只是在原点。 定位 做好技术,不能再辜负,踏实做,努力做,相信努力还赶得上&…

计算机网络离不开光缆,九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt...

九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt 第二十一章信息的传递,第四节越来越宽的信息之路,1微波的性质更接近光波,大致沿_______传播,需要每隔_____km左右建一个中继站,才能把信息一直传递下去。2卫星通信…

0基础能转行IT互联网吗?该怎么转?

随着移动互联网行业快速发展 一些IT岗位的薪资要远远高于其他行业 有的IT岗位同等学历可以拿某些行业好几倍薪资 如何进入IT行业? 零基础可以成为大神吗? 又该怎么做? 对于不了解软件开发的人 应该怎么入门效率最高 下面达妹帮你们整理了以…

南京基于路灯杆架设5G基站,进程居全国前列

5G基站、环境监测、车流监控…… 信息化时代,你身边的路灯杆不只能照明,还会成为承载各项智慧应用功能的“集合体”。在昨天上午南京市委市政府的例行发布会上,南京市城管局通报“5G智慧灯杆助力南京高质量发展”建设情况:南京目…

同样是编程开发,为什么Java程序员薪资一直居高不下?

学习,是一种生活态度、一种信仰,一种掌控外部世界的能力。对于穷人和富人来说,他们之间最根本的区别就是对待学习的态度,穷人总是千方百计地找到各种理由或者放纵自己的惰性去拒绝学习,而富人去想尽办法、挤出时间给自…

高职新生计算机应用书,建邺生本德育网

20高职计算机应用技术班学生春游活动方案 一、指导思想 感受春天,亲近自然,热爱生命。 二、活动时间 2021年3月11日下午半天 四、参加对象 20高职计算机应用技术班全体学生 五、地点 安全就近、交通便捷、便于组织和开展活动的建邺青奥公园。 六、安全应…

Android 垃圾分类APP(五)垃圾分类新闻展示

垃圾分类新闻展示 前言正文一、申请新闻接口数据二、垃圾分类新闻接口请求三、轮播显示四、垃圾分类新闻列表五、新闻详情页六、源码 前言 上一篇文章中完成了图像输入进行垃圾分类,这篇文章进行主页面的UI丰富。 正文 点击天行API,登录之后&#xff0c…

院庆 |於昊、刘超平、杨明:南京市老城区老旧小区停车发展政策与策略

2016年,十三五开局之年,南京城交院也迎来了二十岁生日。二十年风风雨雨,二十年岁月峥嵘,南京城交院始终以精心的态度、精湛的技术、精诚合作的精神创造一流的规划设计咨询精品,致力于城市与交通的健康可持续发展。值此…

unity中单位是米还是厘米_厘米和米都是什么单位

一个从事房产营销策划的年轻人,经过几年奋斗,在业界已小有所成。他的生活每日像拧足了的发条,被传真、资料、甲方以及各种方案充塞得满满的。 一夜,他加班到很晚,走了好一段路没叫到车。 走得热了,他停下来…

谢震业,离“苏神”还有多远?

文|螳螂财经 作者| 陈三 东京奥运会收官结束了。 要说今年中国队给出的大惊喜,田径短跑赛场绝对算一个。 “苏神”苏炳添自不必多说,两度封神,不断刷新着中国短跑运动的历史,作为田径人给中国田径短跑运动带来了太多的“意外”…

数字体育进入黄金窗口期

2021年是十四五的开局之年,也是全面推动数字中国建设之年,而数字体育作为消费经济和数字经济结合的新领域,正在迎来创新创业的黄金窗口期。特别是截至2020年,我国已经连续两年人均GDP超过1万美元,部分城市的人均GDP更超…