zoukankan      html  css  js  c++  java
  • scrapy中下载文件和图片

    下载文件是一种很常见的需求,例如当你在使用爬虫爬取网站中的图片、视频、word、pdf、压缩包等的时候

    scrapy中提供了FilesPipeline和ImagesPipeline,专门用来下载文件和图片:

      我们其实可以把这两个item pipeline看成是特殊的下载器,用户使用的时候只需要通过item的一个特殊的字段就可以将要下载的文件或者图片的url传递给它们,它们会自动将文件或者图片下载到本地,并将下载的结果信息存入到item的另一个特殊的字段,方便用户在导出文件的时候查阅

      FilesPipeline

        使用FilesPipeline下载页面中所有的PDF文件,

      1. 在配置文件settings中启用FilesPipeline,通常将其至于其它的item pipeline的前面
      2. 在配置文件中settings中,使用FILES_STORE指定文件的下载目录
      3. 在spider解析一个包含文件下载链接的页面的时候,将所有的需要下载文件的url地址都收集到一个列表中,赋值给item的file_urls字段(item['file_urls'])。FilesPipeline在处理每一项item的时候会去读item['file_urls'],对其中的每一个url进行下载

        当FilesPipeline下载完item['file_urls']所有的文件后,会讲各个文件的下载结果收集到另一个列表,赋值给item的files字段item['files']。下载的结果包括以下内容:

      1. Path:文件下载到本地的路径(相对于FILES_STORE的相对路径)。
      2. Checksum:文件的校验
      3. url:文件的url地址

      ImagesPipeline

        图片也是文件,所以下载图片本质上其实也是下载文件,ImagesPipeline是FilesPipeline的子类,使用上和FilesPipeline大同小异,只是在所使用的item字段和配置选项上略有差别,

          ImagesPipeline在FilesPipeline的基础上针对图片增加了一些特有的功能:

        1. 为图片生成缩略图
          1. 开启这个功能,只需要在settings中设置IMAGES_THUMBS,它是一个字典,每一项的值都是缩略图的尺寸
            IMAGES_THUMBS = {
               'small': (50, 50),
               'big': (270, 270),
            }
          2. 当你下载图片的时候,本地会出现三张图片(一张原图,两张缩略图)
        2. 过滤掉尺寸过小的图片
              1. 开启这个功能后,如果下载一张指定宽高的图片,该图片就会被抛弃掉,因为他的宽高不符合标准
              2. 需要在settings中配置IMAGES_MIN_WIDTH和IMAGES_MIN_HEIGHT,它们分别是指定图片的最小宽和高
                IMAGES_MIN_WIDTH = 110 
                IMAGES_MIN_HEIGHT = 110    

                           

              

  • 相关阅读:
    Easyui datagrid 修改分页组件的分页提示信息为中文
    Easyui datagrid 实现表格记录拖拽
    Java:内部类
    算法导论:Trie字典树
    算法导论:找零钱问题
    lintcode:组成最大的数
    lintcode:验证二叉查找树
    lintcode:将二叉查找树转换成双链表
    lintcode:二叉树的路径和
    lintcode:字符串置换
  • 原文地址:https://www.cnblogs.com/tulintao/p/11703599.html
Copyright © 2011-2022 走看看