这几天终于忙完毕设和学校的事情,终于有时间来写Python了(( ̄▽ ̄)~*)。前些天在群里看到有人讨论这个360美女图库 的爬取。自己今天也尝试下(蛮简单)。
因为这个网站是下拉到底底部,图片就会加载进来,所以自己想用Seleniu+PhantomJS来做,后来分享doc源代码并没有我们想要的图片信息,后来发现是js请求的数据,找到数据请求的地址,自己发现每次,下拉都会加载30张图片,所以自己将请求的其实图片张数每次加30(其实也就是模拟下拉动作,所以分析网站很重要,怎么省事怎么来吧O(∩_∩)O)下面是爬取过程和详情。
一、分析网站,找到目标的数据并分析img
首先打开开发者工具,找到network选项卡里下的doc,我们看下有没有想要的图片的src地址?
![1531909-67000632d200565e.png](https://i-blog.csdnimg.cn/blog_migrate/6a22b33a3c0d06f0121e113522bed825.webp?x-image-process=image/format,png)
接着看我们可以看到底部srcipt,id=“initData”,通过这个id名字来看,就是初始打开这个网页的时候回默认加载30张美女图片
![1531909-ca4490b1dd66995b.png](https://i-blog.csdnimg.cn/blog_migrate/132f38369d34ab5d23ac3add6e85a8d4.webp?x-image-process=image/format,png)
然后打开network下的all选项,我们下拉浏览器,会发现下面有规律的请求地址:
(没错,这就是目标的数据请求地址,格式也是json)
ch=beuaty代表美女分类,sn={}代表每次请求30张
![1531909-f444228f1c6ad912.png](https://i-blog.csdnimg.cn/blog_migrate/8711f052e1bff9d7bd306cfbdea4e451.webp?x-image-process=image/format,png)
(ps:json的数据提取qhimg_url很简单了,和上一篇DOTA排行榜思路差不多)
![1531909-00f139c1aecdd224.png](https://i-blog.csdnimg.cn/blog_migrate/3e55151663e71d9aecba5d0279c20669.webp?x-image-process=image/format,png)
我上传了:格式化工具下载
二、编写代码,下载图片并存到相应路径
这里自己使用urllib库中的一个函数urlretrieve()保存图片(很方便,很强大),然后保存的图片名称就是请求地址里的图片名称。
![1531909-4d33ae88e0d20226.png](https://i-blog.csdnimg.cn/blog_migrate/3da1675e29b600b6924e93bced6f8b32.webp?x-image-process=image/format,png)
![1531909-17daa32858589965.png](https://i-blog.csdnimg.cn/blog_migrate/2e96de779b950aa5046cbcf7f4cef0ef.webp?x-image-process=image/format,png)
源码地址
三、总结
整体思路简单,但是这个程序有改善的地方,比如可以获取其他分类的图片
分类那就将beauty替换成其他字段的分类字段。还有一个就是,可以尝试多线程下载,这儿离的思路是下拉动作完成之后,获取到所有src地址之后,再去执行的下载,可以尝试下边下拉边下载。
(ps:加一张美女图片:ψ(*`ー´)ψ)
![1531909-8fee5c0ba30c6235.png](https://i-blog.csdnimg.cn/blog_migrate/542bc0c9a08a1ae8cca3f1f94e4a91fa.webp?x-image-process=image/format,png)