python - 如何在scrapy中按项目将下载的文件分组在同一子目录中?
问题描述
我正在尝试使用从网站下载文件scrapy
并已成功使事情正常工作。目前,所有文件都按预期保存到同一文件夹中。是否可以根据文件scrapy
所属/来自的项目将文件保存到不同的子目录?
这就是我当前的管道实现的样子(子类FilesPipeline
):
import hashlib
from scrapy.pipelines.files import FilesPipeline
from scrapy.utils.python import to_bytes
class XeroPipeline(FilesPipeline):
def file_path(self, request, response=None, info=None):
original_path = super(XeroPipeline, self).file_path(request, response=None, info=None)
root = hashlib.sha1(to_bytes(request.url)).hexdigest()
if "objectUID" in request.url:
return root + '/' + original_path + '.jpeg'
else:
return root + '/' + original_path + '.pdf'
但这只是将每个文件保存在一个单独的文件夹中。我似乎无法获得对该scrapy
项目的引用,因此我无法区分每个请求的来源。欢迎任何建议。
解决方案
推荐阅读
- java - 让 IntelliJ 和 Maven 使用相同的类路径
- mysql - Qliksense 中的 SQL 查询
- react-native - 反应原生直接导航到给定的 URL 每次都回家
- javascript - 当另一个下拉菜单打开时隐藏一个下拉菜单
- xpages - 几秒钟后需要重新加载 XPage
- linear-regression - 使用 skompiler 模块时,我得到“没有名为 'sklearn.linear_model.base' 的模块”
- javascript - 关于奇数/偶数字符的正则表达式行为
- algorithm - BlueZ Mesh : 手柄模型
- python - 如何让 python 程序(应该从 csv finl 中寻找变量)通过 PHP 运行并返回相应的变量?
- excel - 将数据表写入 Excel 文件