2015-06-25 2 views
3

Это мой settings.py:Scrapy не позволяет мой FilePipeline

from scrapy.log import INFO 


BOT_NAME = 'images' 

SPIDER_MODULES = ['images.spiders'] 
NEWSPIDER_MODULE = 'images.spiders' 
LOG_LEVEL = INFO 

ITEM_PIPELINES = { 
    "images.pipelines.WritePipeline": 800 
} 

DOWNLOAD_DELAY = 0.5 

Это мой pipelines.py:

from scrapy import Request 
from scrapy.pipelines.files import FilesPipeline 


class WritePipeline(FilesPipeline): 

    def get_media_requests(self, item, info): 
     for url in item["file_urls"]: 
      yield Request(url) 

    def item_completed(self, results, item, info): 
     return item 

Это очень стандартный, обычный материал. И все же это линия моего журнала:

2015-06-25 18:16:41 [scrapy] INFO: Enabled item pipelines: 

Таким образом, конвейер не включен. Что я здесь делаю неправильно? Я несколько раз использовал Scrapy, и я довольно уверен, что паук в порядке. Этот предмет является обычным товаром с file_urls и files.

ответ

2

Упс, я забыл добавить FILES_STORE в настройках. Посмотрите here для объяснения.

Соответствующая цитата:

Затем настройте параметр допустимого значения, которое будет использоваться для хранения загруженных изображений целевого хранилища. В противном случае конвейер останется отключенным, даже если вы включите его в настройку ITEM_PIPELINES.

0

Я действительно не знаю о FilesPipeline, но для каждого трубопровода вам необходимо реализовать метод process_item(self, item, spider).

+1

Я добавил process_item(), и он по-прежнему отключен. Кроме того, [документация] (http://doc.scrapy.org/en/latest/topics/media-pipeline.html), похоже, не требует этого. – tschwab

Смежные вопросы