下载360图片(一)

    我们来完成一个使用ImagesPipeline下载图片的实战项目。360图片是一个知名的图片搜索网站,在浏览器打开http://image.so.com,其中,页面分类下有大量字画图片,我们可以编写爬虫爬取这些图片。

1、项目需求:

    下载360图片网站中艺术分类下的所有图片到本地。

2、页面分析:

    在下图所示的页面中向下滚动鼠标滚轮,便会有更多的图片加载出来,图片加载是由JavaScript脚本完成的,并且可以看到jQuery发送的请求,其响应的结果是一个json串。

下载360图片(一)

复制图中jQuery发送请求的url(即Name列的第一个名字的link address),使用scrapy shell进行访问,查看相应结果的内容(json):

    下载360图片(一)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

下载360图片(一)

    如上结果,响应结果(json)中的list字段是一个图片信息列表,count字段是列表中图片信息的数量,每一项图片信息的qhimg_url字段是图片下载地址。

    连续滚动鼠标滚轮加载图片,捕获更多的jQuery发送的请求:

    第一次加载:https://image.so.com/zj?ch=art&sn=30&listtype=new&temp=1

    第二次加载:https://image.so.com/zj?ch=art&sn=60&listtype=new&temp=1

    第三次加载:https://image.so.com/zj?ch=art&sn=90&listtype=new&temp=1

    ......  

经过观察,可以总结出这些url规律:

    ·ch参数    分类标签

    ·sn参数    从第几张图片开始加载,即结果列表中第一张图片在服务器端的序号。

    我们可以通过这个API每次获取固定数量的图片信息,从提取每一张图片的url(下载地址),直到响应结果中的count字段为0(意味着没有更多图片了)。

    到此,页面分析工作完成了。