2017-09-12 7 views
0

ダウンロードしたファイルの出力フォルダを変更したいのですが、source code of files pipelineに基づいて、file_pathは無効にすることができます。以下のコードを試しましたが、うまくいかなかったようです。 Btw、私はpython - scrapyの新機能です。Scrapy Override FilesPlipからのファイル

pipelines.py

from scrapy.pipelines.files import FilesPipeline 

class secFilesPipeline(FilesPipeline): 
    def file_path(self, request, response=None, info=None): 
    ## start of deprecation warning block (can be removed in the future) 
    def _warn(): 
     from scrapy.exceptions import ScrapyDeprecationWarning 
     import warnings 
     warnings.warn('FilesPipeline.file_key(url) method is deprecated, please use ' 
         'file_path(request, response=None, info=None) instead', 
         category=ScrapyDeprecationWarning, stacklevel=1) 

    # check if called from file_key with url as first argument 
    if not isinstance(request, Request): 
     _warn() 
     url = request 
    else: 
     url = request.url 

    # detect if file_key() method has been overridden 
    if not hasattr(self.file_key, '_base'): 
     _warn() 
     return self.file_key(url) 
    ## end of deprecation warning block 

    media_guid = hashlib.sha1(to_bytes(url)).hexdigest() # change to request.url after deprecation 
    media_ext = os.path.splitext(url)[1] # change to request.url after deprecation 
    return 'test/%s%s' % (media_guid, media_ext) 

settings.py

ITEM_PIPELINES = { 
'myproject.pipelines.secFilesPipeline': 2, 
'scrapy.pipelines.files.FilesPipeline': 1, 
} 

FILES_STORE = '/home/joseph/pdf' 

予想される出力:例。 FILES_STORE +月+ファイル名.pdf = /home/joseph/pdf/September/filename.pdf

アイデアはありますか?ありがとうございました。

答えて

0

settings.pyFILES_STOREの値はdocumentationで十分です。

+0

デフォルトの出力パスは 'FILES_STORE' +' full'です。ファイル名を変更する予定です。 Ex。 'FILES_STORE' +' Month' + 'filename.pdf' ='/home/joseph/pdf/September/filename.pdf' – Joseph

+0

@Joseph私は質問に答えていた:*出力フォルダを変更したい*** ... –

+0

私のコードに基づいて、私はすでにそれを行い、 'full'パスのフォルダーを編集しようとし、またこのタイトルに基づいています。もっと明確にするために質問を編集します。 – Joseph