Как получить доступ к локальному пути загруженного изображения Scrapy - PullRequest
0 голосов
/ 28 ноября 2018

вот как я загружаю изображения. Теперь мне нужно было создать еще одну линию для вставки моих очищенных данных.

class CmindexPipeline(ImagesPipeline):



    def get_media_requests(self, item, info):

        for image_url in item['image_url']:
            yield scrapy.Request(image_url)

    def item_completed(self, results, item, info):
        image_paths = [x['path'] for ok, x in results if ok]
        if not image_paths:
            raise DropItem("Item contains no images")
        item['image_paths'] = image_paths
        print("From Images Items", item)
        return item



class MysqlPipline(object):
    def process_item(self, item, spider):
        print("From Process Items",item['image_path'])

вот мои настройки.py

ITEM_PIPELINES = {'cmindex.pipelines.CmindexPipeline': 1,'cmindex.pipelines.MysqlPipline':2}
IMAGES_STORE ='E:\WorkPlace\python\cmindex\cmindex\img'
IMAGES_THUMBS = {
    '16X16': (16, 16)
}

Но, к сожалению,потому что я не могу получить доступ к элементу ['image_paths'] в process_item.it ошибка повышения

KeyError: 'image_paths'

Если кто-то знает, что я делаю неправильно, пожалуйста, предложите мне.

1 Ответ

0 голосов
/ 28 ноября 2018

Метод process_item вызывается до item_completed, поэтому у него пока нет image_paths.

Если вы хотите получить доступ к image_paths, вам придется сделать это внутри item_completed, или напишите другой конвейер, который будет расположен после конвейера изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...