写在前面
前几天玩游戏时,lol盒子右下角有条广告,
广告大概这个样子
伸手党请戳文章尾部
![60d6c79b1da46841ea06eae999097e2c.png](https://img-blog.csdnimg.cn/img_convert/60d6c79b1da46841ea06eae999097e2c.png)
咦,小姐姐,还有cosplay,点进去看看。
哇,发现一个好玩的网站,好多漂亮的妹子,页面打开很流畅,点开后有的浏览页面还有好听的音乐,产品体验极佳。
![4f7155407a781786c220af949231f04d.png](https://img-blog.csdnimg.cn/img_convert/4f7155407a781786c220af949231f04d.png)
![f9045d8e0cf20c4d6375dfcf55a45ef2.png](https://img-blog.csdnimg.cn/img_convert/f9045d8e0cf20c4d6375dfcf55a45ef2.png)
不过每组图片只能看前几张图,后面的图只能看到缩略图,如果想继续看或者打包下载得花银子,通常要1-5rmb。
![2ec3e82d0c4a837c414c94e315696023.png](https://img-blog.csdnimg.cn/img_convert/2ec3e82d0c4a837c414c94e315696023.png)
ctrlC+ctrlV几张后不乐意了,这么保存一来看不到全部图片,二来,麻烦,太麻烦了。
俗话说,妹子是第一生产力,鲁迅有云,懒人创造美好世界。
项目编写
试试吧,看能不能发现点有趣的东东。首先习惯性的看看html源码,blabla一堆,头大,pass。
![9c7f60fbc693b8474dc0930dfb1d6e30.png](https://img-blog.csdnimg.cn/img_convert/9c7f60fbc693b8474dc0930dfb1d6e30.png)
从页面源码来看,页面应该是前端渲染出来的,直接解析爬虫爬的话会比较麻烦。既然是前端渲染,那再看看请求吧,首页肯定是加载相册列表,没啥大用处,直接看加载具体某一相册的请求结果,点开某一相册,跳过图片,看看有没有什么可用的接口,果然有。
![345bf479f0660dfb2ffb88fd702d98d9.png](https://img-blog.csdnimg.cn/img_convert/345bf479f0660dfb2ffb88fd702d98d9.png)
复制出来,浏览器走起,请求后返回如下信息
![e8d27bf5080e0da42a4f6ac649124a02.png](https://img-blog.csdnimg.cn/img_convert/e8d27bf5080e0da42a4f6ac649124a02.png)
很明显是该相册的详细信息获取接口,可是怎么有些像是被编码过的东西。既然被编码了,解码出来瞧瞧,postman走起。postman顺利解析出结果
![a442c652abda22a83683c2a3c50a8e91.png](https://img-blog.csdnimg.cn/img_convert/a442c652abda22a83683c2a3c50a8e91.png)
上下翻翻看,发现了一个神奇的链接,是个zip压缩包,嗯,有点意思。
![289fb974549a6da899990b7f0485b15c.png](https://img-blog.csdnimg.cn/img_convert/289fb974549a6da899990b7f0485b15c.png)
下载回来解压,哈哈,居然是该相册的所有照片。
![e3fa136a7f09a8ef5f4752fad180a08d.png](https://img-blog.csdnimg.cn/img_convert/e3fa136a7f09a8ef5f4752fad180a08d.png)
看返回的结果,很明显使用了jsonp,于是接着试着减少参数,去除了返回结果中恼人的无用回掉前缀,最后简化到仅剩一个参数,id,这接口太呆萌了。
![3fabfa720c38b2bfd664f7d1b695bf99.png](https://img-blog.csdnimg.cn/img_convert/3fabfa720c38b2bfd664f7d1b695bf99.png)
此外还发现了网页上音乐的地址。
![370360b76f89c7ff797d4247a41ad48e.png](https://img-blog.csdnimg.cn/img_convert/370360b76f89c7ff797d4247a41ad48e.png)
至此该网站的“核心资产”已经被扒的底裤都没了,下面开始批量爬吧。
爬虫思路
有两种思路,一种是利用主页调用的获取相册列表参数接口来获得相册列表再通过列表爬压缩包地址,另外一种是直接从1开始依次尝试到首页最新的一个相册对应的id。最终决定采用第二种思路,因为这样即使首页隐藏的相册通过这种方式也能被发现。
开搞,建数据库,数据表,为方便后续追加执行,以及放在服务器上爬,所以采用springboot配合异步调用来实现。一开始使用post方式进行调用,结果尝试抓取了一两百条后到数据库一看,怎么这么多重复的啊,而且怎么同一个id和我用postman直接调得到的结果不一致?很可能开反爬了。
转变思路,postman采用的是get方式,所以程序试试也使用get方式进行调用,同时加入线程随机睡眠时间和User-Agent请求头,以此模拟普通用户的浏览器访问行为。bingo,顺利的抓取到了正确的图包名称、下载地址地址、音乐名称、音乐下载地址等信息。
![9dc024b96d520dbc7bf1a41c2f3a4f04.png](https://img-blog.csdnimg.cn/img_convert/9dc024b96d520dbc7bf1a41c2f3a4f04.png)
扔服务器上爬吧。等了大概十几分钟,爬完后总共获取到892条有效的图包记录,202条有效的音乐记录。
![52cd3427bdfc1d4f1d0804be922d6efe.png](https://img-blog.csdnimg.cn/img_convert/52cd3427bdfc1d4f1d0804be922d6efe.png)
![fa8cac85af6656dc14c8710fe5fb1ccc.png](https://img-blog.csdnimg.cn/img_convert/fa8cac85af6656dc14c8710fe5fb1ccc.png)
爬到地址后可不能算结束,还得把真正的压缩包都下载回来,写个批量下载的方法,服务器走起,然后便开始吭哧吭哧的下载,速度还行,能接近7MB/S。
![e67d255a1d68895aee144fa21d5fccbc.png](https://img-blog.csdnimg.cn/img_convert/e67d255a1d68895aee144fa21d5fccbc.png)
![484d49dbc7dbbca5aaa0a7275bc7f4e8.png](https://img-blog.csdnimg.cn/img_convert/484d49dbc7dbbca5aaa0a7275bc7f4e8.png)
从上午11点开始到晚上9点下载完成,总共耗时10个小时,从服务器上全部下载回来吧。
![cc89417ae2af1c1d5774a131ca44e376.png](https://img-blog.csdnimg.cn/img_convert/cc89417ae2af1c1d5774a131ca44e376.png)
![8767d1e7b6378d3c5f2d9e4b69df8a02.png](https://img-blog.csdnimg.cn/img_convert/8767d1e7b6378d3c5f2d9e4b69df8a02.png)
经过漫长的等待后,终于下载完,写了个脚本统计结果,最终:总共获取到了46187张图片,大小36.5GB。
![8553a31004166605dae88d71d27fea05.png](https://img-blog.csdnimg.cn/img_convert/8553a31004166605dae88d71d27fea05.png)
项目效果图:
![e4b6d0384fabfde6810131cb166a454c.png](https://img-blog.csdnimg.cn/img_convert/e4b6d0384fabfde6810131cb166a454c.png)
写在最后
看完文章心动的小伙伴关注、转发,私信“资料”即可免费获取全套的python自学视频课程哦,学完以后万物皆可爬~
加油!!!!
30天Python 学习计划,供大家参考。
第1天
Python简介 - Python的历史 / Python的优缺点 / Python的应用领域
Python环境搭建
第2天
使用python解释器
关于python语法的简单介绍
第3天
词法结构
运算符和表达式
第4天
python数据结构 列表/字符串/元组
第5天
python数据结构 字典/集合
第6天
python流程控制1
if语句
for循环
while循环
第7天
python流程控制2
continue语句
break语句
pass语句
第8~9天
格式化字符串
读写文件
第10~12天
python函数
Lambda 表达式
编码风格
第13天
python模块
第14天
迭代器
生成器
生成器表达式
第15~16天
错误和异常
第17~19天
面向对象编程
第19~20天
标准库使用
日期和时间
数学
操作系统接口
第21天
安装 Python 模块
第22~23天
虚拟环境和包
第24天
多线程
第25~30天
训练题
与之配套的清华毕业生415集Python视频教程:
由北京尚学堂高淇老师亲自录制,415集Python全栈入门到精通的Python全套+前端+4个实战项目,第2季已经新鲜出炉了!小伙伴们快快领取学习吧!
获取方式:转发此文+关注 并 私信小编 “ 资料 ”,即可免费获取!
![d91a0c71d3a00d1e6e4f5ec370b583c2.png](https://img-blog.csdnimg.cn/img_convert/d91a0c71d3a00d1e6e4f5ec370b583c2.png)
![eaf176539e2844ecd5bf1fa42ce1fe7e.png](https://img-blog.csdnimg.cn/img_convert/eaf176539e2844ecd5bf1fa42ce1fe7e.png)
![4b4e28624931d894d3ef747a7229a416.png](https://img-blog.csdnimg.cn/img_convert/4b4e28624931d894d3ef747a7229a416.png)
![3da00609798e2b425d4e14b38f190473.png](https://img-blog.csdnimg.cn/img_convert/3da00609798e2b425d4e14b38f190473.png)