python爬虫源码_Python—爬虫:王者荣耀全套皮肤【附源码】

d5746ff8aa8f1efc3538aaf36d8e9a2d.png

怎么获取全套皮肤?用钱买,或者用爬虫爬取下来~虽然后者不能穿。这个案例稍微复杂一点,但是一个非常值得学习的项目。

具体实现思路:

  • 分析网页源代码结构
  • 找到合适的入口
  • 穷举访问并解析
  • 爬取所有英雄所有皮肤图片

代码思路/程序流程:

我分析王者荣耀网站上面的英雄资料库发现所有英雄的页面基本上都是连贯的,并且还是偏向与静态网页没有过多的JavaScript渲染,所以比较适合来一波穷举遍历爬虫,但是速度也很快。

利用python语法字符串操作,列表操作,字典操作等等循环遍历英雄页面利用python列表切片索引和字符串拼接等等方法来解析HTML得到皮肤图片链接和背景故事文本,将皮肤图片二进制文件保存为png高清大图,将所有英雄背景故事合并保存为文本文档

下面是功能以及效果展示

整体展示

63de721e07e8a8a4cffa4ad8cb0a7b3e.png

爬取效果展示-丰功伟绩

6a7b4488df63771a4a27a11f0bb93ce8.png

王者荣耀【皮肤高清大图爬虫】源代码如下

#!/usr/bin/env python
# -*- encoding: utf-8 -*-import requests
fo = open('./wzry-jpg/wzry-pf.txt', 'w')path = './wzry-jpg/'
ls = []     
for i in range(105,200):url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{0}/{0}-bigskin-1.jpg".format(i)status_code = requests.request('get', url).status_codeif status_code != 200:continuefor j in range(1, 9):imgurl = url[:-5] + '{}.jpg'.format(j)response = requests.request('get', imgurl)if response.status_code != 200:            continuels.append(imgurl)##下载print("开始下载第{}-{}个英雄皮肤图片>>>".format(i,j), end='')with open(path+str(i)+'-'+str(j)+'.png', 'wb') as f:f.write(response.content)print('======下载完成======')for i in range(501,516):url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{0}/{0}-bigskin-1.jpg".format(i)status_code = requests.request('get', url).status_codeif status_code != 200:continuefor j in range(1, 9):imgurl = url[:-5] + '{}.jpg'.format(j)response = requests.request('get', imgurl)if response.status_code != 200:            continuels.append(imgurl)##下载print("开始下载第{}-{}个英雄皮肤图片>>>".format(i,j), end='')with open(path+str(i)+'-'+str(j)+'.png', 'wb') as f:f.write(response.content)print('======下载完成======')
##print(ls)##连接写入txt文件
for line in ls:fo.write(line+'n')
fo.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ee规范_测试Java EE 8规范

java ee规范Java EE 8平台肯定在过去的几个月中一直在发展。 规范已经发布了早期的草案评审,里程碑甚至最终版本。 实际上,随着JSF 2.3的发布,JSR-372才刚刚进入最终版本。 有关更多信息,请参见 Arjan的帖子 。 它有幸成为JSR-37…

c语言中Gretchen函数的功能,听过很多的歌的音乐达人给我推荐一下

『 挚爱篇 』1 Bloated -- 挚爱篇2 Joy Is WIthin Reach -- Adrienne3 First Love -- 挚爱篇4 First Time -- 挚爱篇5 Get Funky -- 挚爱篇6 Walking on Air -- 挚爱篇7 Por qu te vas -- 挚爱篇8 爵士慢摇曲 -- Milky9 I Just Cant Get You Out of My Head (Club Mix) -- 挚爱…

JavaScript(JS)常用正则表达式汇总

文章目录自定义字符串校验函数常用正则表达式自定义字符串校验函数 校验字符串是否全由数字组成,是则返回true,否则返回false: function isDigit(str) {var regExp /^[0-9]{1,20}$/;// exec方法如果找到符合正则表达式的字符串&#xff0c…

警惕成教自考_不,保持警惕不会伤害Java。 关于Java许可的评论。

警惕成教自考所以。 Oracle希望通过Java赚钱。 然后,The Register发表了一篇非常对立的文章,上面有一个超级吸引人的标题。 根据他们的消息来源,“ Oracle正在大力加强对声称违反其许可证的Java客户的审计”。 当Twitter诗句对人们批评Oracle…

android colorstatelist_Android 样式系统 | 主题背景属性

在 Android 样式系统系列的前几篇文章中,我们介绍了主题背景与样式的区别,以及为什么说通过主题背景和公共主题背景属性来分解您要实现的内容是一个不错的主意,请点击链接回顾:Android 样式系统 | 主题背景和样式Android 样式系统 | 常见的主…

浙江科技学院c语言考试试卷,浙江科技学院c语言C试卷A.doc

浙江科技学院c语言C试卷A浙江科技学院2012 - 2013学年第学期考试试卷A卷信息、经管、 学院 20 年级 理工科专业得分一、判断题(本大题共12小题,每题小1分,共12分)得分二、单选题(本大题共20小题,每题1分,共20分)A.循环控制表达式的…

MyEclipse的Debug功能最基本的操作

使用 Debug 功能最基本的操作: 1.首先在一个 Java 文件中设断点,然后 Debug as --> Open Debug Dialog,然后在对话框中选类后,再点击 Run 运行程序,当程序走到断点处就会自动转到 Debug 视图 2.F5 键与F6 键均为单…

python二级考试可以用pycharm吗_学Python,Pycharm不能不知道怎么用

栏目介绍必会的Pycharm。我决定把去年写的Python文章整理一个专栏,垃圾的就直接删除,将多篇博文整理成一篇。 工欲善其事必先利其器,Pycharm 是最受欢迎的Python开发工具,它提供的功能非常强大,我尽量把自己用的都写写…

C语言写出生命游戏什么水平,我也来汇报~~~生命游戏。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int main(void){FILE *wen1,*wen2;system("color f0");char a[1000]{0};int i0;xx ch{0,0};wen1fopen("shuru.txt","r");if (wen1!NULL){while(!feof(wen1)){fread(&a[i],1,1,wen1);}chchinesec…

hazelcast 使用_使用HazelCast进行Hibernate缓存:JPA缓存基础知识

hazelcast 使用HazelCast的最大功能之一就是对Hibernate第二级缓存的支持 。 JPA具有两个级别的缓存。 一级缓存在事务期间缓存对象的状态。 通过两次查询相同的对象,您必须获得第一次获取的对象。 但是,在包含您检索并访问数据库的复杂查询的情况下&…

判断输入的字符串总字节数是否超出限制

function checkByteLength(str) { var bytes 0; for(var i 0;i<str.length;i){ var c str.charAt(i); if(c<256){ bytes 1; }else{ bytes 2; } } if(bytes >6){ alert(“您输入的字数超过限制&#xff01;”); } }

android页面统计代码,android流量统计(示例代码)

android.net.TrafficStats类中&#xff0c;提供了多种静态方法&#xff0c;可以直接调用获取&#xff0c;返回类型均为long型&#xff0c;如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。static long getMobileRxBytes() //获取通过Mobile连接收到的字节总数&#xff0…

python二维数组排序_Python实现二维数组按照某行或列排序的方法【numpy lexsort】...

本文实例讲述了Python实现二维数组按照某行或列排序的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; lexsort支持对数组按指定行或列的顺序排序&#xff1b;是间接排序&#xff0c;lexsort不修改原数组&#xff0c;返回索引。 &#xff08;对应lexsort 一维数组…

apache camel_Apache Camel Intellij IDEA插件的工作已开始

apache camel仅仅因为圣诞节并不意味着骆驼静止不动。 在23日晚上&#xff0c;我花了一些时间进行研究&#xff0c;并开始研究IDEA的Apache Camel插件的小原型。 它已经存在了我很长时间。 原因是Apache Camel为目录提供了有关工具的大量有用信息。 该目录包含有关每个Camel组…

Final Cut Pro X剪辑影片基本步骤

文章目录一、资源库、事件、项目之间的区别二、制作一个视频的步骤&#xff08;一&#xff09;创建资源库&#xff08;二&#xff09;创建事件(非必需)&#xff08;三&#xff09;导入资源&#xff08;四&#xff09;创建项目&#xff08;五&#xff09;进行剪辑&#xff08;六…

python储存_python数据储存

python数据储存 csv文件的操作 安装csv包 打开cmd 执行 pip install csv 引入的模块名为csv 读取文件 with open("xx.csv","r") as f: read_datacsv.reader(f) for i in read_data: print(i)//打印表的全部元素 print(i[0])//打印表的第一列元素 1 2 3 4 5…

android+udp传输大小,Android UDP数据包如何接收可变大小的数据包

我有一个Android应用程序&#xff0c;它监视UDP数据包并调用一个方法来处理收到的消息。我有一个问题&#xff0c;如果传入的消息更长&#xff0c;它将调用方法来处理消息。但是如果传入的消息较短&#xff0c;则不会调用该方法&#xff0c;但如果我发送短消息两次&#xff0c;…

单例模式引发的内存泄漏:_资源泄漏:救援的命令模式

单例模式引发的内存泄漏:多年来&#xff0c; 使用Plumbr进行性能监控时&#xff0c;我遇到了数百个资源泄漏引起的性能问题。 在这篇文章中&#xff0c;我想描述一种最简单的方法来清理资源并避免该问题。 首先&#xff0c;我以电影播放器​​应用程序为例来描述问题。 这种应…

使用 ssh 命令来访问(登录/连接)远程服务器主机

打开 terminal 客户端&#xff0c;输入如下命令语句&#xff1a; ssh root119.119.10.5; // ssh 登录用户名称远程主机IP地址

android json 斜杠,Android中Json数据去掉斜杠

数据如下&#xff1a;["{"STCD":"172017156159","ItemID":"0003002","TM":"2020-01-16 19:20:10","NFOINDEX":0,"DATAVALUE":0,"DATATYPE":0}","{"STCD"…