Как отправить данные из одного конвейера в другой в ScrapyPython

Программы на Python
Anonymous
Как отправить данные из одного конвейера в другой в Scrapy

Сообщение Anonymous »


Здравствуйте, у меня есть два конвейера, первый из которых предназначен для загрузки фотографий:

класс ModelsPipeline(ImagesPipeline): def get_media_requests(self, item, info): для image_url в элементе ['image_urls']: выход Scrapy.Request(image_url) def file_path(self, request, response=None, info=None, *, item=None): image_url_hash = hashlib.shake_256(request.url.encode()).hexdigest(5) image_filename = f'{item["name"]}/{image_url_hash}.jpg' вернуть имя_файла_изображения def item_completed(сам, результаты, предмет, информация): image_paths = [x['path'] для ок, x в результатах, если ок] для изображения в image_paths: file_extension = os.path.splitext(изображение)[1] img_path = f'{IMAGES_STORE}{изображение}' md5 = hashlib.md5(open(img_path, 'rb').read()).hexdigest() img_destination = f'{IMAGES_STORE}{item["name"]}/{md5}{file_extension}' os.rename(img_path, img_destination) вернуть изделие Второй вариант — сохранить предыдущую информацию в базе данных

класс DatabasePipeline(): def open_spider(сам, паук): self.client = db_connect() def close_spider(я, паук): сам.клиент.закрыть() defprocess_item(я, предмет, паук): self.client.upsert(пункт) Функция item_completed в первом конвейере возвращает имя и путь, которые я хочу отправить во второй конвейер для хранения в базе данных, но я не могу получить доступ к этим данным.

Вопрос в том, как я могу это сделать?

Спасибо

Вернуться в «Python»