Scrapy: создать структуру папок из загруженных изображений на основе URL, из которого загружаются изображения

У меня есть массив ссылок, которые определяют структуру сайта. При загрузке изображений по этим ссылкам я хочу одновременно поместить загруженные изображения в структуру папок, аналогичную структуре веб-сайта, а не просто переименовать ее (как ответили вScrapy Image скачать как использовать пользовательское имя файла)

Мой код для того же выглядит так:

class MyImagesPipeline(ImagesPipeline):
    """Custom image pipeline to rename images as they are being downloaded"""
    page_url=None
    def image_key(self, url):
        page_url=self.page_url
        image_guid = url.split('/')[-1]
        return '%s/%s/%s' % (page_url,image_guid.split('_')[0],image_guid)

    def get_media_requests(self, item, info):
        #http://store.abc.com/b/n/s/m
        os.system('mkdir '+item['sku'][0].encode('ascii','ignore'))
        self.page_url = urlparse(item['start_url']).path #I store the parent page's url in start_url Field
        for image_url in item['image_urls']:
            yield Request(image_url)

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

Я подозреваю, что это происходит потому, что функции «get_media_requests» и «image_key» могут выполняться асинхронно, поэтому значение «page_url» изменяется до того, как оно используется функцией «image_key».

Ответы на вопрос(1)

Ваш ответ на вопрос