当前位置:嗨网首页>书籍在线阅读

10-媒体下载

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.2.7 媒体下载

Scrapy可以使用图像管道下载媒体内容,此外还可以将图像转换为不同的格式、生成缩略图以及基于大小过滤图像。

IMAGES_STORE 设置用于设定图像存储的目录(使用相对路径时,将会在项目根目录下创建目录)。每个 Item 的图像URL应该在 image_urls 字段中设定(可以被 IMAGES_URLS_FIELD 设置覆写),而下载图像的文件名则是在一个新的 images 字段中设定(可以被 IMAGES_RESULT_FIELD 设置覆写)。可以使用 IMAGES_MIN_WIDTHIMAGES_MIN_HEIGHT 设置过滤过小的图像。 IMAGES_EXPIRES 决定了图像在过期前保留在缓存中的天数。对于缩略图的生成,可以使用 IMAGES_THUMBS 设置,它可以让你按照一种或多种尺寸生成缩略图。比如,可以让Scrapy生成一种图标大小的缩略图以及一种用于每次图像下载时的中等大小缩略图。

1.其他媒体

可以使用文件管道下载其他媒体文件。与图像类似, FILES_STORE 设置用于确定已下载文件的存放位置,而 FILES_EXPIRES 设置用于确定文件保留的天数。 FILES_URLS_FIELD 以及 FILES_RESULT_FIELD 设置都和对应的 IMAGES_* 设置的功能相似。文件管道和图像管道可以同时激活,不会产生冲突。

示例3——下载图像

为了能够使用图像功能,必须使用 sudo pip install image 安装图像包。在我们的开发机中,已经为大家安装好该三方包了。想要启用图像管道,只需要编辑项目的 settings.py 文件,添加少量设置。首先,需要在 ITEM_PIPELINES 中包含 scrapy.pipelines.images.ImagesPipeline 。然后,设置 IMAGES_STORE 为相对路径 "images" ,此外还可以选择通过 IMAGES_THUMBS 设置一些缩略图的描述,相关代码如下所示。

ITEM_PIPELINES = {
...
  'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = 'images'
IMAGES_THUMBS = { 'small': (30, 30) }

我们在Item中已经包含了合适的 image_urls 字段,所以现在可以参照如下命令执行爬虫了。

$ scrapy crawl fast -s CLOSESPIDER_ITEMCOUNT=90
...
DEBUG: Scraped from <200 http://http://web:9312/.../index_00003.html/
property_000001.html>{
  'image_urls': [u'http://web:9312/images/i02.jpg'],
  'images': [{'checksum': 'c5b29f4b223218e5b5beece79fe31510',
        'path': 'full/705a3112e67...a1f.jpg',
        'url': 'http://web:9312/images/i02.jpg'}],
...
$ tree images
images
├── full
│  ├── 0abf072604df23b3be3ac51c9509999fa92ea311.jpg
│  ├── 1520131b5cc5f656bc683ddf5eab9b63e12c45b2.jpg
...
└── thumbs
   └── small
      ├── 0abf072604df23b3be3ac51c9509999fa92ea311.jpg
      ├── 1520131b5cc5f656bc683ddf5eab9b63e12c45b2.jpg
...

可以看到图像成功下载,并且创建了缩略图。主文件的JPG名称按照预期存储在了 images 字段当中,因此很容易推测缩略图的路径。如果想要清空图像,我们可以使用 rm -rf images