简单爬虫:乃木坂图库(上)(逻辑分析部分)


最近几天,由于肖战粉丝举报ao3平台导致的“227大团结”事件,使得大家一度人人自危,担心某天自己喜欢的东西也因为上边的某个“政策”被删除或隔之墙外。最近由于疫情,托朋友买的花花写真没有到手 😭,只能在网上看看别人的扫图,联系到这个事件,便有了将图片下载下来保存(防止某天被封)的念头。于是乎,便写了一个爬虫,也就有了这篇文章。

  目标网站是 https://www.nogizaka46.net.cn/pic/memSelect.html

  进入网站后会显示不同成员的合集,点击图片后会跳转到相应的合集,此时url变化为 nogizaka46.net.cn/pic/memberInfo.html 后面的参数name=*区别了不同合集。

  当然直接查看网页的showpic.js文件也可以得出这个结论。

  查看网页的html代码,很容易找到图片对应的位置,如下图

  此时理论上已经可以爬取图片,但发现在此页面中,点击左侧的图片可以切换右侧的具体合集,并且页面向下滚动至底时,会加载新的图片。因此直接爬取无法得到第一页之后的图片。此过程中url未发生变化,无法通过url的变化直接获得后边图片,猜测网页应该运用了ajax技术,于是继续查看网页的js代码。

  可以发现图片的地址是从nogizaka/getImageUrl获取的,查看网页的网络请求记录,我们可以找到一个GET请求,同样是name=*的方式获取相应合集的图片地址。

  直接在浏览器输入name为ikuta_protrait1的URL,不出所料,我们得到了此合集的所有图片地址。

  那我们如何获得所有合集对应的name呢?其实和上边的原理相同,可以看到是通过/pic/pic_group/getMemberInfo得到所有的合集名称。

  同样,在网络请求记录也可以找到这条请求:

  于是便得到了合集的名称:

  至此,我们爬虫的基本逻辑分析完成👏,剩下的便是代码的编写部分了。


文章作者: polarstormx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 polarstormx !
评论
 上一篇
code test code test
#include <iostream> #include <vector> using namespace std; class object { public: object(); }; double Base(in
2020-03-03 polarstormx
下一篇 
Hello World Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hex
2020-02-28 polarstormx
  目录