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
アイデアはありますか?ありがとうございました。
デフォルトの出力パスは 'FILES_STORE' +' full'です。ファイル名を変更する予定です。 Ex。 'FILES_STORE' +' Month' + 'filename.pdf' ='/home/joseph/pdf/September/filename.pdf' – Joseph
@Joseph私は質問に答えていた:*出力フォルダを変更したい*** ... –
私のコードに基づいて、私はすでにそれを行い、 'full'パスのフォルダーを編集しようとし、またこのタイトルに基づいています。もっと明確にするために質問を編集します。 – Joseph