首页 > 解决方案 > 如何在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项目的引用,因此我无法区分每个请求的来源。欢迎任何建议。

标签: pythonscrapy

解决方案


推荐阅读