【发布时间】:2018-09-18 19:31:27
【问题描述】:
Scrapy 1.5 允许设置 IMAGES_STORE 设置以存储所有下载的媒体,如 documentation 中所述
我希望能够根据Item 中的某些值为每个Item 指定一个自定义文件夹。对 Scrapy 的内部了解不多,我不确定要重写哪些方法来完成此操作。
我考虑过覆盖from_settings(cls, settings),但我还无法访问Item。
有什么想法吗?
【问题讨论】:
Scrapy 1.5 允许设置 IMAGES_STORE 设置以存储所有下载的媒体,如 documentation 中所述
我希望能够根据Item 中的某些值为每个Item 指定一个自定义文件夹。对 Scrapy 的内部了解不多,我不确定要重写哪些方法来完成此操作。
我考虑过覆盖from_settings(cls, settings),但我还无法访问Item。
有什么想法吗?
【问题讨论】:
我通过覆盖file_path 方法解决了这个问题。所以在IMAGES_STORE 我有基本路径然后我控制file_path 的变量部分。像下面的东西。但是我首先有一个错字,scrapy 默默地忽略了它,即使在调试中也没有打印任何错误......我不知道为什么?所以最好从一个简单的字符串开始进行测试。
def file_path(self, request, response=None, info=None):
url = request.url
image_guid = hashlib.sha1(to_bytes(url)).hexdigest()
return '%s/full/%s.jpg' % ('my_custom_path', image_guid)
【讨论】: