python爬图片_Python爬虫下手,就得从高清美图开始!附教程

写在前面

前几天玩游戏时,lol盒子右下角有条广告,

广告大概这个样子

伸手党请戳文章尾部

60d6c79b1da46841ea06eae999097e2c.png

咦,小姐姐,还有cosplay,点进去看看。

哇,发现一个好玩的网站,好多漂亮的妹子,页面打开很流畅,点开后有的浏览页面还有好听的音乐,产品体验极佳。

4f7155407a781786c220af949231f04d.png
f9045d8e0cf20c4d6375dfcf55a45ef2.png

不过每组图片只能看前几张图,后面的图只能看到缩略图,如果想继续看或者打包下载得花银子,通常要1-5rmb。

2ec3e82d0c4a837c414c94e315696023.png

ctrlC+ctrlV几张后不乐意了,这么保存一来看不到全部图片,二来,麻烦,太麻烦了。

俗话说,妹子是第一生产力,鲁迅有云,懒人创造美好世界。

项目编写

试试吧,看能不能发现点有趣的东东。首先习惯性的看看html源码,blabla一堆,头大,pass。

9c7f60fbc693b8474dc0930dfb1d6e30.png

从页面源码来看,页面应该是前端渲染出来的,直接解析爬虫爬的话会比较麻烦。既然是前端渲染,那再看看请求吧,首页肯定是加载相册列表,没啥大用处,直接看加载具体某一相册的请求结果,点开某一相册,跳过图片,看看有没有什么可用的接口,果然有。

345bf479f0660dfb2ffb88fd702d98d9.png

复制出来,浏览器走起,请求后返回如下信息

e8d27bf5080e0da42a4f6ac649124a02.png

很明显是该相册的详细信息获取接口,可是怎么有些像是被编码过的东西。既然被编码了,解码出来瞧瞧,postman走起。postman顺利解析出结果

a442c652abda22a83683c2a3c50a8e91.png

上下翻翻看,发现了一个神奇的链接,是个zip压缩包,嗯,有点意思。

289fb974549a6da899990b7f0485b15c.png

下载回来解压,哈哈,居然是该相册的所有照片。

e3fa136a7f09a8ef5f4752fad180a08d.png

看返回的结果,很明显使用了jsonp,于是接着试着减少参数,去除了返回结果中恼人的无用回掉前缀,最后简化到仅剩一个参数,id,这接口太呆萌了。

3fabfa720c38b2bfd664f7d1b695bf99.png

此外还发现了网页上音乐的地址。

370360b76f89c7ff797d4247a41ad48e.png

至此该网站的“核心资产”已经被扒的底裤都没了,下面开始批量爬吧。

爬虫思路

有两种思路,一种是利用主页调用的获取相册列表参数接口来获得相册列表再通过列表爬压缩包地址,另外一种是直接从1开始依次尝试到首页最新的一个相册对应的id。最终决定采用第二种思路,因为这样即使首页隐藏的相册通过这种方式也能被发现。

开搞,建数据库,数据表,为方便后续追加执行,以及放在服务器上爬,所以采用springboot配合异步调用来实现。一开始使用post方式进行调用,结果尝试抓取了一两百条后到数据库一看,怎么这么多重复的啊,而且怎么同一个id和我用postman直接调得到的结果不一致?很可能开反爬了。

转变思路,postman采用的是get方式,所以程序试试也使用get方式进行调用,同时加入线程随机睡眠时间和User-Agent请求头,以此模拟普通用户的浏览器访问行为。bingo,顺利的抓取到了正确的图包名称、下载地址地址、音乐名称、音乐下载地址等信息。

9dc024b96d520dbc7bf1a41c2f3a4f04.png

扔服务器上爬吧。等了大概十几分钟,爬完后总共获取到892条有效的图包记录,202条有效的音乐记录。

52cd3427bdfc1d4f1d0804be922d6efe.png
fa8cac85af6656dc14c8710fe5fb1ccc.png

爬到地址后可不能算结束,还得把真正的压缩包都下载回来,写个批量下载的方法,服务器走起,然后便开始吭哧吭哧的下载,速度还行,能接近7MB/S。

e67d255a1d68895aee144fa21d5fccbc.png
484d49dbc7dbbca5aaa0a7275bc7f4e8.png

从上午11点开始到晚上9点下载完成,总共耗时10个小时,从服务器上全部下载回来吧。

cc89417ae2af1c1d5774a131ca44e376.png
8767d1e7b6378d3c5f2d9e4b69df8a02.png

经过漫长的等待后,终于下载完,写了个脚本统计结果,最终:总共获取到了46187张图片,大小36.5GB。

8553a31004166605dae88d71d27fea05.png

项目效果图:

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
eaf176539e2844ecd5bf1fa42ce1fe7e.png
4b4e28624931d894d3ef747a7229a416.png
3da00609798e2b425d4e14b38f190473.png

获取方式:转发此文+关注 并 私信小编 “ 资料 ”,即可免费获取!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值