这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战。
最近掘友们在疯狂的晒自己的猫猫,同时,又有广大掘友在疯狂的云吸猫!
我也一样,但是我觉得有点不过瘾,如果能够把你们的猫都搞到手就好了,全部为我所有!
但这不可能实现,很失望,怎么办呢?
有了!!!虽然搞不到你们的猫,那就退一步,搞到你们的猫的照片,四舍五入一下,不就相当于搞到你们的猫了吗!机智!!!!
那怎样搞到所有猫的照片呢?
一个一个的右键另存为? 不可能的!我来爬一下试试!
掘金运营大大不要封我ip封我号,毕竟我只是一个想撸猫的普通群众(小声哔哔)!
开干!!
分析网站
通过抓包,我找到了沸点的请求接口,如下:
我大胆猜一下,"theme_id": "7007350783603638279"
大概就是”猫星人最可爱的一点”的话题,limit
是每次请求的沸点条数,sort
是热门和最新两种排序方式,cursor
大概就是游标,代表从哪一条开始请求。
通过分析返回体,证明我的猜想是正确的,哈!
而且,我在返回体里找到了,你们的用户名,沸点的内容,以及你们发的猫····的照片url链接!优秀啊!!
那么现在,只差代码了。这都是小事!
编写程序
到这里,我似乎发现事情有些不对了!
上面说的cursor
是一个”eyJ2IjoiNzAyMzU5NjI1MjkzNTc2NjA1MyIsImkiOjEyMH0=”,这是个什么玩意,明显加密了啊!
于是,我开始尝试解密,看看加密前的是什么。我发现是通过Base64的方式进行加密的,哇,也太仗义了,我以为会是什么奇奇怪怪的加密方式,就到这走不下去了呢!
如下,解密出来是{"v":"7023596252935766053","i":100}
字符串,根据我的经验来看,里面的i
就是游标,代表着从那一条开始。
整明白了!开干!
代码实现
请求数据加密
1 | python复制代码def base64_encrypt(text): |
单页爬取测试
先把cursor
数据内的i
设置为0,爬取第一页测试一下:
1 | python复制代码import base64 |
经测试,完美运行,可以得到第一页的数据,上面已经说过,返回体内的msg_Info
里面的pic_list
是猫的照片列表,循环所有的沸点数据,再循环照片列表把照片下载下来即可。
我感觉胜利就在眼前了,这里提前庆祝一下~
翻页爬取
接下来唯一要做的就是构造翻页请求了,通过查看返回体,我看到有个has_more
属性,代表着是否有下一页,那就好办了,判断一下就可以,如果有下一页,把cursor
数据内的i
加20,请求下一页的数据就行了,知道has_more
为Fslse
停止。
运行过程截图:
大功告成!!
共爬下来几百张猫猫的照片,下面是部分截图,看看有没有你家的哈哈哈!
完整代码就不放了,毕竟我还要在掘金混的,万一造成不好的影响,啪!把我号一封!我以后还怎么在掘金摸鱼哈哈哈!
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !
本文转载自: 掘金