传统方法汽车之家爬虫:

获取之后在pipelines.py中使用request.urlretrieve进行下载

qiche.py:

items.py:

pipelines.py:

使用Scrapy内置方法进行下载:

Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的item pipelines。这些pipeline有些共同的方法和结构(我们称之为media pipeline)。一般来说你会使用Files Pipeline或者Images Pipeline。

Scrapy下载的原因:

避免重新下载最近已经下载过的文件。

可以方便的指定文件存储的路径。

可以将下载的图片转换成通用的格式。比如png或jpg。

可以方便的生成缩略图。

可以方便的检测图片的宽和高,确保他们满足最小限制。

异步下载,效率非常高。

下载文件的Files Pipeline:

当使用Files Pipeline下载文件的时候,按照以下步骤来完成:

1、定义好一个Item,然后在这个item中定义两个属性,分别为file_urls以及files。file_urls是用来存储需要下载的文件的url链接,需要给一个列表。

2、当文件下载完成后,会把文件下载的相关信息存储到item的files属性中。比如下载路径、下载的url和文件的校验码等。

3、在配置文件settings.py中配置FILES_STORE,这个配置是用来设置文件下载下来的路径。

4、启动pipeline:在ITEM_PIPELINES中设置scrapy.pipelines.files.FilesPipeline:1。

下载图片的Images Pipeline:

当使用Images Pipeline下载文件的时候,按照以下步骤来完成:

1、定义好一个Item,然后在这个item中定义两个属性,分别为image_urls以及images。image_urls是用来存储需要下载的图片的url链接,需要给一个列表。

2、当文件下载完成后,会把文件下载的相关信息存储到item的images属性中。比如下载路径、下载的url和图片的校验码等。

3、在配置文件settings.py中配置IMAGES_STORE,这个配置是用来设置图片下载下来的路径。

4、启动pipeline:在ITEM_PIPELINES中设置scrapy.pipelines.images.ImagesPipeline:1。

qiche.py:

items.py:

pipelines.py:

settings.py: