Как отключить Scipes ImagesPipeline для автоматического создания полной папки? - PullRequest
0 голосов
/ 23 октября 2018

При загрузке изображений с использованием scipes ImagesPipeline я установил путь сохранения, но я все равно создам новую полную папку для меня в пути сохранения.Я не хочу, чтобы это создавало это полностью для меня.Как я могу закрыть это?Я установил путь к хранилищу изображений в scrapy's settings.py.

IMAGES_STORE ='F:/test/exp'

Когда мой сканер сканирует данные, изображение сохраняется по пути «F: / test / exp / full».Я не хочу, чтобы моя программа создала для меня эту «полную» папку.Но сохраните его прямо в пути, который я установил

1 Ответ

0 голосов
/ 23 октября 2018

К сожалению, full суффикс к пути жестко закодирован в конвейере:

# from scrapy 1.5.1 source code
def file_path(self, request, response=None, info=None):
    ...
    image_guid = hashlib.sha1(to_bytes(url)).hexdigest() 
    return 'full/%s.jpg' % (image_guid)

Однако вы можете исправить это, расширив ImagesPipeline как свой собственный, создавая файл myproject/pipelines.py:

class RootImagesPipeline(ImagesPipeline):
    """changes /full/ path to root"""

    def file_path(self, request, response=None, info=None):
    """This is the method used to determine file path"""
        path = super().file_path(request, response, info)
        return path.replace('full/', '')

и активируйте его вместо конвейера scrapy в вашем settings.py:

ITEM_PIPELINES = {
    'myproject.pipelines.RootImagesPipeline': 1000
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...