【项目预览】

【创作背景】

自上一个项目(项目4)功败垂成之后,我花了挺多时间调试,找了一个信任我的小伙伴,帮我测试,我到底能不能通过小程序偷到他电脑里的东西。直到学到了爬虫,我对偷东西小程序的热情一下子烟消云散,全身心扑到了爬虫的学习中。果然,爬虫才是我的最爱啊!

刚报名python的时候就听说有“隔壁家的小伙伴用python爬取了王者荣耀全皮肤,卖给喜欢收藏的朋友小赚了一笔”这样激励人的故事。如今我也学了爬虫了,全群(王者群)的小伙伴都指望我给他们爬皮肤呢!然而,当我跑去研究了一下网上各种所谓“爬取王者荣耀全皮肤”的案例,才发现,被骗了!!!他们爬的,只是皮肤的图片。哎,想想也是,百来块的皮肤要是这么容易就被爬下来了,腾讯还赚不赚钱了?

虽然只能爬图片,我还是决定做这个项目。一则,作为一名王者资深划水玩家,我也有收集癖啊。二则,刚学了爬虫,练练手也挺好的。

【功能设想】

一键爬取王者目前所有英雄的所有皮肤图片,存到一个文件夹里。图片用英雄的名称+编号命名。

【过程分析】

1,首先打开王者荣耀官网 https://pvp.qq.com/

2,随便点进一个英雄的页面,可以看见各皮肤图片的小图,然后打开检查,找出href

3,多打开几个英雄的页面,通过比较,就能观察出,“//game.gtimg.cn/images/yxzj/img201606/heroimg/155/155-smallskin-2.jpg” 这个地址只有2个参数在变幻,一个是155(这个是英雄的编号),一个是smallskin-2的“2”(这个是ta的皮肤数量)。另外,如果我想下载大图,想必应该把small改成big。

4,所以,只要有英雄编号列表,知道每个英雄有几个皮肤,就能拼接出所有皮肤图片的href。

5,哪里去找英雄列表呢?在官网里随便逛一逛,就能找到 https://pvp.qq.com/web201605/herolist.shtml 。打开network-XHR,找到英雄列表。其中的ename显然就是英雄的编号了。cname是英雄名字(换个编码方式就应该可以正确显示),hero_type应该是皮肤个数。太好,这下所有信息齐全了。

6,不过经过我测试,某些英雄的hero_type似乎小于真实的皮肤数量。因为全皮肤图爬下来后,我在欣赏的时候,发现有好几个我喜欢的皮肤,居然都没有!这怎么能忍?

7,可是如果json表格里的数据都不对,那我到哪里去找真实的英雄皮肤数量呢?算了,懒得找了,反正没有超过10个的,我打算拼出每个英雄的10个皮肤图片href,然后用try语句去执行就行了。

8,有了href,只需要用编码的格式转换requests.get()到的内容,筛掉内容为空的,然后存成图片即可。

【完工感受】

这个项目让我感受到了try语句之香,各种闪退从此byebye。

另外,我发现这个切合我实际用途的案例,爬起来出奇的简单,比课堂上的例子容易多了。好多网站,确实没有把资料藏的很深,对于爬虫,他们只是限制,不会禁止。我们作为编程的,应该尊重这样的约定俗成:爬信息可以,但不要高频大量。避免给网站太大负担,竭泽而渔。

【完整代码】

#爬取王者荣耀全皮肤图片import requests,os
from bs4 import BeautifulSoupprint('本程序可以下载王者荣耀全皮肤图片(只有图片,不能给你买皮肤!),耗时5-10分钟。')
input('\n按回车开始下载(如果不想运行,请直接关闭程序):')try:os.makedirs('./王者荣耀全皮肤')
except:passpath0='https://pvp.qq.com/web201605/js/herolist.json'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
res=requests.get(path0,headers=headers)
items=res.json()for i in items:#遍历每个英雄cname=i['cname']ename=str(i['ename'])#htype=str(i['hero_type'])print('正在下载{}的皮肤图片。。。'.format(cname))for j in range(1,10):#拼接不同皮肤的网址path1='http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'connect1=ename+'/'+enamepath2='-bigskin-'connect2=str(j)path3='.jpg'path=path1+connect1+path2+connect2+path3try:picres=requests.get(path,headers=headers)pic=picres.contenttest=str(pic)if 'not found' not in test:picname='{}-{}.jpg'.format(cname,j)picpath='./王者荣耀全皮肤/'+picnamef=open(picpath,'wb')f.write(pic)f.close()except:passinput('下载完毕。谢谢使用。再见。')

【云云怪】第5个项目:爬取王者荣耀全皮肤图片相关推荐

  1. java爬取王者荣耀全皮肤图片

    一.简单介绍爬虫 网络爬虫(Web Crawler),又称为网络蜘蛛(Web Spider)或 Web 信息采集器,是一种按照一定规则,自动抓取或下载网络信息的计算机程序或自动化脚本,是目前搜索引擎的 ...

  2. Python爬虫基础--爬取王者荣耀英雄皮肤图片

    文章目录 思路分析 涉及到的知识点 Json数据说明 `herolist.json`:英雄列表 皮肤图片尺寸分析 程序说明 代码 结果(数据)分析 声明 这里只是简单介绍主要内容,详见github,仓 ...

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

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

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

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

  5. python爬取王者_python爬取王者荣耀全皮肤的简单实现代码

    相信现在很多人都喜欢玩王者荣耀这款手游,里面好看的皮肤令人爱不释手.那么你有没有想过把王者荣耀高清皮肤设置为壁纸,像下面这样 今天就来教大家如何利用python16行代码,实现王者荣耀全部高清皮肤的下 ...

  6. python爬取王者荣耀全皮肤,漫客的福利!

    先明确思路: 寻找皮肤图片地址 1 找到英雄列表 2 找到英雄皮肤地址 下载图片 1 英雄有几个皮肤 2 下载文件 进入正题:如何爬取王者荣耀的英雄皮肤照片? 分为两步: 找到皮肤图片的地址 下载图片 ...

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

    爬取王者荣耀官网皮肤[爬虫] 上次我们讲了爬虫的定义以及爬取王者荣耀皮肤的思路. 今天我们换一种方式来爬取同样的内容.大体上思路和方法一相同. 方法一传送门:方法一 方法二 # 网址:https:// ...

  8. python-scrapy爬虫框架爬取王者荣耀英雄皮肤图片和技能信息

    1.创建工程 将路径切换到想要保存爬虫项目的文件夹内,运行scrapy startproject WZRY新建一个名为WZRY的工程. 2.产生爬虫 将路径切换至新创建的spiders文件夹中,运行s ...

  9. python爬取王者皮肤别人可以看见效果吗_利用python爬取王者荣耀英雄皮肤图片

    前两天看到同学用python爬下来LOL的皮肤图片,感觉挺有趣的,我也想试试,于是决定来爬一爬王者荣耀的英雄和皮肤图片. 然后,简单的分析一下结构,看看是否有反爬机制. 之后,在上网查阅资料后,发现所 ...

最新文章

  1. celery的使用(最新详细解析)
  2. docker 简单入门(一)
  3. 计算机辅助建筑设计亚洲学会,清华大学
  4. 2017.8.30 elasticsearch-sql的安装与使用
  5. java小数点默认定义_java求两个数后小数点默认无限长度
  6. Spring Cloud构建微服务架构(七)消息总线
  7. HTML期末作业-中国足球网页
  8. ASP.NET Core 部署到Cont OS 服务器
  9. 基于Java的外卖订餐系统
  10. python wget_python wget下载文件
  11. 体检信息管理系统功能表
  12. 小程序apkg还原_如何禁用微信小程序(适合任何机型的完美解决方案)
  13. GP数列 三角形斜边 小码哥的生日 完全平方数
  14. 申请苹果开发者帐号傻瓜式教程
  15. 计算机情绪识别属于什么方向,情绪识别
  16. 深度搜索算法(DFS)
  17. Java中如何实现添加用户信息_如何通过Java客户端在Active Directory中创建新用户并将其添加到现有组...
  18. 网站备案 服务器不在一个地方,域名和服务器不在一个 如何备案
  19. linux无法识别m2固态,主板识别不出m.2固态硬盘怎么办|笔记本电脑无法识别m.2固态硬盘解决方法-系统城...
  20. VBA实现xls批量转换为xlsx(非新增副本文件)

热门文章

  1. 客服中心话务预测模型应用实践
  2. linux 下db2数据库命令
  3. mysql5.532,又双叒叕一篇评测,StorageReview这样评价PBlaze5 916 U.2 NVMe SSD
  4. Cesuim中线的波动纹理
  5. 远程用计算机加共享打印机,如何使用远程打印机?简单3步就可以做到!
  6. qt android双系统,传华为P50系列手机将会搭载Android、鸿蒙双系统版本
  7. 浅析电商防止恶意下单
  8. 计算机自考论文怎么参考,计算机自考学论文参考文献 计算机自考专著类参考文献哪里找...
  9. 告别网盘限速,快解析搭建私人云相册
  10. Python+汽车销售系统 毕业设计-附源码191807