Scrapy下载图片配置

scrapy配置下载图片

假如在scrapy中我们定义了自己的item

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# items.py

class TestItem(scrapy.Item):
image_url = scrapy.Field()

# settings.py

import os

# 启用ITEM_PIPELINES 并添加
ITEM_PIPELINE = {
# 启用scrapy提供给我们的ImagesPipeline,并设置下载顺序,越小越先处理
'scrapy.pipelines.images.ImagesPipeline': 1,
}

# 告诉scrapy下载图片时对应的item字段
IMAGES_URLS_FIELD = 'image_url'

# 项目的路径,用于告知scrapy存储的图片路径
project_dir = os.path.abspath(os.path.dirname(__file__))
IMAGES_STORE = os.path.join(project_dir, 'images')

注意:scrapy下载图片的时候传入的是一个列表,应在设置TestItem的image_url时注意传入的是列表,否则会报错,详细参数可见 scrapy.pipelines.images.ImagesPipeline 源码

例如如下写法:
在spider里面写入:

1
2
3
4
5
6
7
8
9
10
11
from Test.items import TestItem:


class TestSpider(scrapy.Spider)

def parse(self, response):
test_item = TestItem()

image_url = 'http://www.baidu.com/test/test.jpg'
# 这样写法
test_item['image_url'] = [image_url]