六、图片的下载

一、实现scrapy 自动下载图片到本地的功能,通过项目管道设置。

首先要在setting中搭建pipeline的管道名称

ITEM_PIPELINES= {

'mm.pipelines.MmPipeline':300,

'scrapy.pipelines.images.ImagesPipeline':1,

}

管道队伍添加了新成员!后面的数字代表处理顺序,数字越小处理越早。

setting中还要做如下配置:

#用于保存图片

IMAGES_URLS_FIELD ="front_image_url"#对应上面标号1,这个配置好了,image就是去item找front_这个字段

project_dir=os.path.abspath(os.path.dirname(__file__))

IMAGES_STORE = os.path.join(project_dir,'images')#设置图片保存的路径,配置相对路径,换电脑也没事,在articlespider下面新建一个image的文件夹

解释下:

1、在setting 文件中ITEM_PIPELINE添加: 'scrapy.pipelines.images.ImagesPipeline':1

1为处理顺序,顺序越小,越先处理;

2、继续在setting中添加图片URL地址获取,

IMAGES_URLS_FIELD = "front_image_url"    #front_image_url为Item 中存储图片URL的字段,应该为list类型;所以我们应将前面存入Item时设置为list

3、设置图片下载到本地的路径

绝对路径:IMAGES_STORE = ""

相对路径: 多用相对路径,工程迁移后绝对路径不能使用了

创建一个images的文件夹。

跟setting放在同一个目录之下。

别忘了setting中添加os模块

六、图片的下载_第1张图片
六、图片的下载_第2张图片
六、图片的下载_第3张图片

二、运行main.py可见 在项目文件下新生成了images文件,并下载了图片,自动生成了图片名字




六、图片的下载_第4张图片


三、扩展功能: 对图片进行过滤:

在setting 文件中设置:

IMAGES_MIN_HEIGHT = 100

IMAGES_MIN_WIDTH = 100

过滤掉宽度高度小于100的图片

四、pipeline中配置image

思路:自定义pipline,多加个管道,该管道继承下载图片的类,并重写与Item 交互的方法,从众提取到本地路径,并返回这个Item交给下一个pipline管道。获取文件存放的路径,设置下载图片的大小。

原来的scrapy.pipelines.images.ImagesPipeline':1,

这一步已经可以解决图片下载问题了,但是如果你想要图片下载的高度的定制化,就需要做如下的配置。这就解释了我已经有了图片下载的通道为什么还要再一遍pipeline

六、图片的下载_第5张图片


打断点进行测试,可以看到,图片的路径已经填充进来了。

下一步我们就要跟数据库打交道了。mysql发挥用处

你可能感兴趣的:(六、图片的下载)