这几天终于忙完毕设和学校的事情,终于有时间来写Python了(( ̄▽ ̄)~*)。前些天在群里看到有人讨论这个360美女图库 的爬取。自己今天也尝试下(蛮简单)。 因为这个网站是下拉到底底部,图片就会加载进来,所以自己想用Seleniu+PhantomJS来做,后来分享doc源代码并没有我们想要的图片信息,后来发现是js请求的数据,找到数据请求的地址,自己发现每次,下拉都会加载30张图片,所以自己将请求的其实图片张数每次加30(其实也就是模拟下拉动作,所以分析网站很重要,怎么省事怎么来吧O(∩_∩)O)下面是爬取过程和详情。
首先打开开发者工具,找到network选项卡里下的doc,我们看下有没有想要的图片的src地址?
发下并没有我们要的信息
接着看我们可以看到底部srcipt,id=“initData”,通过这个id名字来看,就是初始打开这个网页的时候回默认加载30张美女图片
初始数据
然后打开network下的all选项,我们下拉浏览器,会发现下面有规律的请求地址: (没错,这就是目标的数据请求地址,格式也是json)
ch=beuaty代表美女分类,sn={}代表每次请求30张
img的src为qhimg_url : "http://p0.so.qhimgs1.com/t01ac9283f4ba213c3c.jpg"
(ps:json的数据提取qhimg_url很简单了,和上一篇DOTA排行榜思路差不多)
json格式化工具(看的舒服些)
这里自己使用urllib库中的一个函数urlretrieve()保存图片(很方便,很强大),然后保存的图片名称就是请求地址里的图片名称。
下载保存图片
整体思路简单,但是这个程序有改善的地方,比如可以获取其他分类的图片
分类 那就将beauty替换成其他字段的分类字段。还有一个就是,可以尝试多线程下载,这儿离的思路是下拉动作完成之后,获取到所有src地址之后,再去执行的下载,可以尝试下边下拉边下载。