前言

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

爬图思路

找到英雄列表

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

英雄详情

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

分析皮肤图片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 os

class 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_list

def 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 += 1

img_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()

复制代码

最后

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

python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片相关推荐

  1. Python爬虫爬取王者荣耀英雄人物高清图片

    Python爬虫爬取王者荣耀英雄人物高清图片 实现效果: 网页分析 从第一个网页中,获取每个英雄头像点击后进入的新网页地址,即a标签的 href 属性值: 划线部分的网址是需要拼接的 在每个英雄的具体 ...

  2. python爬取王者皮肤_Python爬取王者荣耀所有英雄以及高清大图

    爬虫的原理: 模拟浏览器的行为,通过网络请求将目标网页抓取到本地. 使用一定的匹配规则,将目标网页中需要的数据提取出来,把不需要的过滤掉. 根据需求,把提取出来的数据存储到磁盘中(json.csv.e ...

  3. 教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)

    教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中.(附源码) 代码展示: 保存在各自的文件夹中 美么? 让我们开始爬虫之路 开发环境 windows 10 python3. ...

  4. Python爬虫——手把手教你爬取王者荣耀英雄皮肤

    大家好!我是霖hero 大家知道目前最火的手游是哪个嘛,没错,就是王者荣耀,这款手游想必大家都听过或者玩过吧,里面有106个英雄,几百个英雄皮肤,今天我来手把手教你们把几百个皮肤都爬取下来. 目录 P ...

  5. Python爬取 | 王者荣耀英雄皮肤海报

    这里只展示代码,具体介绍请点击下方链接. Python爬取 | 王者荣耀英雄皮肤海报 import requests import re import os import time import wi ...

  6. python 山脊图_爬虫:带你一键爬取王者荣耀英雄皮肤壁纸

    一.前言 王者荣耀这款手游,想必大家都玩过或听过,游戏里英雄有各式各样的皮肤,制作得很精美,有些拿来做电脑壁纸它不香吗.本文带你利用Python爬虫一键下载王者荣耀英雄皮肤壁纸. 1. 目标 创建一个 ...

  7. python爬取王者_Python爬取王者荣耀所有英雄以及高清大图

    爬虫的原理: 模拟浏览器的行为,通过网络请求将目标网页抓取到本地. 使用一定的匹配规则,将目标网页中需要的数据提取出来,把不需要的过滤掉. 根据需求,把提取出来的数据存储到磁盘中(json.csv.e ...

  8. 图片链接用src不能被爬虫爬到吗_爬虫:带你一键爬取王者荣耀英雄皮肤壁纸

    一.前言 王者荣耀这款手游,想必大家都玩过或听过,游戏里英雄有各式各样的皮肤,制作得很精美,有些拿来做电脑壁纸它不香吗.本文带你利用Python爬虫一键下载王者荣耀英雄皮肤壁纸. 1. 目标 创建一个 ...

  9. 一键爬取王者荣耀全皮肤高清图片【方法一】

    文章目录 前言 一.爬虫是什么? 二.使用步骤 1.引入库 2.访问的URL 3.爬取思路 三.皮肤URL(需要手动找出) 完整代码 四.效果展示 总结 前言 相信很多小伙伴们都喜欢玩王者荣耀这款MO ...

最新文章

  1. [JavaEE笔记]Cookie
  2. 流式计算strom,Strom解决的问题,实现实时计算系统要解决那些问题,离线计算是什么,流式计算什么,离线和实时计算区别,strom应用场景,Strorm架构图和编程模型(来自学习资料)
  3. SkyCaiji蓝天数据采集发布系统源码v2.3
  4. sts中给项目添加服务器,sts创建java web项目
  5. 牛逼!B 站 up 主开源视频字幕自动翻译神器!
  6. 架构系列---发号器(全局唯一ID生成器)系统设计方案和思路
  7. 股票回测Web应用开发
  8. HTML中的“雪碧图“详解
  9. Verilog在编写第一行代码之前
  10. excel转html出错,excel转html
  11. 矩阵理论| 基础:特征值与特征向量、代数重数/几何重数、相似对角化和Jordan标准型
  12. 企业微信脚手架(第三方)
  13. 【复现笔记】clean-pvnet复现
  14. 数据中台的API网关替换传统的ESB总线可行性分析
  15. IDEA中设置Services(Run Dashboard)
  16. Python爬虫小结
  17. Unity3D之Position的设置
  18. 某商超小程序加密算法解析
  19. 根号三的用计算机怎么表示,三号位怎么打-根号三请问各位,在计算器上如何打出根号三? – 手机爱问...
  20. 机器学习与量化交易∙笔记(3)

热门文章

  1. BiGAN-QP:简单清晰的编码 生成模型
  2. codeforces B. High School: Become Human
  3. android 定时语音,android 定时语音天气播报
  4. ant react 上传_react之ant design mobile如何只能上传一张图片
  5. python alpha_如何用Python打造一个简易版的Alpha GO?
  6. Mybatis更新和删除数据
  7. Spring配置数据源(连接池)
  8. Java实现提现到微信的功能
  9. JAVA——GZIP压缩与解压缩
  10. Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——例题9-3