笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

下载和处理文件和图像

发布者: 笨鸟自学网



文件命名

默认文件命名

默认情况下,文件使用 SHA-1 hash 文件名的URL。

例如,以下图像URL::

http://www.example.com/image.jpg

谁的 SHA-1 hash 是::

3afec3b4765f8f0a07b78f98c07b83f013567a0a

将使用您选择的内容下载并存储 storage method 和以下文件名:

3afec3b4765f8f0a07b78f98c07b83f013567a0a.jpg

自定义文件命名

您可能希望对保存的文件使用不同的计算文件名。例如,通过在文件名中包含元来对图像进行分类。

通过重写 file_path 您的媒体管道的方法。

例如,具有图像URL::的图像管道

http://www.example.com/product/images/large/front/0000000004166

可以处理为具有压缩哈希的文件名和透视 front ::

00b08510e4_front.jpg

通过重写 file_path 如下所示:

import hashlib
from os.path import splitext

def file_path(self, request, response=None, info=None, *, item=None):
    image_url_hash = hashlib.shake_256(request.url.encode()).hexdigest(5)
    image_perspective = request.url.split('/')[-2]
    image_filename = f'{image_url_hash}_{image_perspective}.jpg'

    return image_filename

警告

如果您的自定义文件名方案依赖于在不同刮擦之间可能不同的元数据,则可能会导致使用新文件名意外重新下载现有介质。

例如,如果您的自定义文件名方案使用了产品标题,并且站点在抓取之间更改了项目的产品标题,则Scrapy将使用更新的文件名重新下载相同的媒体。

有关 file_path 方法,请参见 扩展媒体管道 


上一篇:调试内存泄漏下一篇:部署蜘蛛

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-9-8 12:58 , Processed in 0.049051 second(s), 17 queries .

© 2001-2020

返回顶部