codecamp

scrapy 2.3 下载处理其他功能

文件过期

图像管道避免下载最近下载的文件。要调整此保留延迟,请使用 ​FILES_EXPIRES​ 设置(或) ​IMAGES_EXPIRES​ ,对于图像管道),指定延迟天数:

# 120 days of delay for files expiration
FILES_EXPIRES = 120

# 30 days of delay for images expiration
IMAGES_EXPIRES = 30

两种设置的默认值都是90天。

如果您有子类filespine的管道,并且希望对其进行不同的设置,则可以设置以大写类名开头的设置键。例如,给定名为MyPipeline的管道类,您可以设置设置键:

mypipeline_files_expires=180

管道类MyPipeline的过期时间设置为180。

图像的缩略图生成

图像管道可以自动创建下载图像的缩略图。

要使用此功能,必须设置 ​IMAGES_THUMBS​ 到一个字典,其中键是缩略图名称,值是它们的尺寸。

例如::

IMAGES_THUMBS = {
    'small': (50, 50),
    'big': (270, 270),
}

使用此功能时,图像管道将使用以下格式创建每个指定大小的缩略图:

<IMAGES_STORE>/thumbs/<size_name>/<image_id>.jpg

在哪里?

  • <size_name>​ 是在 ​IMAGES_THUMBS​ 字典键 (​small​ , ​big​ 等)
  • <image_id>​ 是 SHA1 hash 图像URL的

存储图像文件的示例 ​small​ 和 ​big​ 缩略图名称:

<IMAGES_STORE>/full/63bbfea82b8880ed33cdb762aa11fab722a90a24.jpg
<IMAGES_STORE>/thumbs/small/63bbfea82b8880ed33cdb762aa11fab722a90a24.jpg
<IMAGES_STORE>/thumbs/big/63bbfea82b8880ed33cdb762aa11fab722a90a24.jpg

第一个是从网站下载的完整图像。

过滤掉小图像

使用图像管道时,可以删除过小的图像,方法是在 ​IMAGES_MIN_HEIGHT​ 和 ​IMAGES_MIN_WIDTH​ 设置。

例如::

IMAGES_MIN_HEIGHT = 110
IMAGES_MIN_WIDTH = 110

注解

大小约束根本不影响缩略图的生成。

可以只设置一个大小约束或同时设置两个大小约束。当同时设置这两种尺寸时,将只保存满足这两种最小尺寸的图像。对于上面的示例,大小为(105 x 105)或(105 x 200)或(200 x 105)的图像都将被删除,因为至少有一个维度比约束短。

默认情况下,没有大小约束,因此所有图像都会被处理。

允许重定向

默认情况下,媒体管道忽略重定向,即HTTP重定向到媒体文件URL请求将意味着媒体下载失败。

要处理媒体重定向,请将此设置设置为 ​True​ ::

MEDIA_ALLOW_REDIRECTS = True
scrapy 2.3 图像处理实例
scrapy 2.3 扩展媒体管道
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

scrapy 2.3 链接提取器

scrapy 2.3 统计数据集合

scrapy 2.3 发送电子邮件

scrapy 2.3 蜘蛛合约

scrapy 2.3 如何部署蜘蛛

scrapy 2.3 AutoThrottle扩展

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }