scrapy中下载文件和图片
下载文件是一种很常见的需求,例如当你在使用爬虫爬取网站中的图片、视频、word、pdf、压缩包等的时候
scrapy中提供了FilesPipeline和ImagesPipeline,专门用来下载文件和图片:
我们其实可以把这两个item pipeline看成是特殊的下载器,用户使用的时候只需要通过item的一个特殊的字段就可以将要下载的文件或者图片的url传递给它们,它们会自动将文件或者图片下载到本地,并将下载的结果信息存入到item的另一个特殊的字段,方便用户在导出文件的时候查阅
FilesPipeline
使用FilesPipeline下载页面中所有的PDF文件,
- 在配置文件settings中启用FilesPipeline,通常将其至于其它的item pipeline的前面
- 在配置文件中settings中,使用FILES_STORE指定文件的下载目录
- 在spider解析一个包含文件下载链接的页面的时候,将所有的需要下载文件的url地址都收集到一个列表中,赋值给item的file_urls字段(item['file_urls'])。FilesPipeline在处理每一项item的时候会去读item['file_urls'],对其中的每一个url进行下载
当FilesPipeline下载完item['file_urls']所有的文件后,会讲各个文件的下载结果收集到另一个列表,赋值给item的files字段item['files']。下载的结果包括以下内容:
- Path:文件下载到本地的路径(相对于FILES_STORE的相对路径)。
- Checksum:文件的校验
- url:文件的url地址
ImagesPipeline
图片也是文件,所以下载图片本质上其实也是下载文件,ImagesPipeline是FilesPipeline的子类,使用上和FilesPipeline大同小异,只是在所使用的item字段和配置选项上略有差别,
ImagesPipeline在FilesPipeline的基础上针对图片增加了一些特有的功能:
- 为图片生成缩略图
- 开启这个功能,只需要在settings中设置IMAGES_THUMBS,它是一个字典,每一项的值都是缩略图的尺寸
IMAGES_THUMBS = {
'small': (50, 50),
'big': (270, 270),
} - 当你下载图片的时候,本地会出现三张图片(一张原图,两张缩略图)
- 开启这个功能,只需要在settings中设置IMAGES_THUMBS,它是一个字典,每一项的值都是缩略图的尺寸
- 过滤掉尺寸过小的图片
- 开启这个功能后,如果下载一张指定宽高的图片,该图片就会被抛弃掉,因为他的宽高不符合标准
- 需要在settings中配置IMAGES_MIN_WIDTH和IMAGES_MIN_HEIGHT,它们分别是指定图片的最小宽和高
IMAGES_MIN_WIDTH = 110
IMAGES_MIN_HEIGHT = 110
- 为图片生成缩略图
scrapy中下载文件和图片的更多相关文章
- Scrapy 下载文件和图片
我们学习了从网页中爬取信息的方法,这只是爬虫最典型的一种应用,除此之外,下载文件也是实际应用中很常见的一种需求,例如使用爬虫爬取网站中的图片.视频.WORD文档.PDF文件.压缩包等. 1.Files ...
- .net中下载文件的方法(转)
.net中下载文件的方法 一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) ...
- VSTO学习笔记(四)从SharePoint 2010中下载文件
原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...
- js中使用showModelDialog中下载文件的时候,闪一下后无法下载
在js中使用showModelDialog中下载文件的时候,会因为showModelDialog自动设置target为_self导致下载文件“只会闪一下”就消失掉 在吧target设置为_blank后 ...
- django 中下载文件与下载保存为excel
一.django 中下载文件 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍dja ...
- SpringMVC实现从磁盘中下载文件
除了文件的上传我们还需要从磁盘下载 实现文件的下载只要编写一个控制器,完成读写操作和响应头和数据类型的设置就可以了 下面演示的是从G盘imgs文件夹中下载文件 具体代码如下 package com.c ...
- java 从网络Url中下载文件 (转)
http://blog.csdn.net/xb12369/article/details/40543649/ /** * 从网络Url中下载文件 * @param urlStr ...
- 使用curl在命令行中下载文件
http://m.blog.csdn.net/blog/mayadong7349/7019208 使用curl在命令行中下载文件 linux下curl简单应用详解 http://blog.sina.c ...
- 使用URLConnection下载文件或图片并保存到本地
有时候需要从网络上面下载图片到本地进行保存,代码如下: package com.jointsky.jointframe.test; import java.io.FileOutputStream; i ...
随机推荐
- 归档和解档配合NSFile存储数据
NSString *Name = @"yc"; //第一个常量NSDocumentDirectory表示正在查找沙盒Document目录的路径(如果参数为NSCachesDirec ...
- iOS进阶二-KVC
概述 KVC的全程是Key-Value Coding, 俗称"键值编码",可以通过一个key来访问属性 常见的AP有 - (void)setValue:(nullable id)v ...
- UOJ67 新年的毒瘤【Tarjan,割点】
Online Judge:#uoj 67 Label:Tarjan,割点,细节 题目描述 辞旧迎新之际,喜羊羊正在打理羊村的绿化带,然后他发现了一棵长着毒瘤的树.这个长着毒瘤的树可以用\(n\)个结点 ...
- vc枚举本机端口信息
关于查看本机端口信息,可能大多数人都知道在cmd下的netstat 命令,殊不知该命令在底层也是调用相关api来实现的,相关函数有:GetTcpTableGetExtendedTcpTableGetU ...
- Go语言简介以及安装
http://www.runoob.com/go/go-tutorial.html Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Grie ...
- ros-slam的链接
http://wiki.ros.org/navigation/Tutorials/RobotSetup 稍后整理
- Vue-Grid-Layout分享一款好用的可拖拽组件
在使用Grafana的过程中,发现Grafana关于视图页面中每一个面板都可拖拽,可随意放大放小,体验非常棒,F12看了Grafana的代码,看打包后的代码很像react,进一步css,看到有grid ...
- windows api(GDI)实现图片旋转
GDI实现图片旋转,博主在网上找了好多资料,都不太如意. 并且在尝试中发现,如果先用SetViewportOrgEx将HDC上的坐标原点移动到图片中心:再在HDC上的获取每个点,用三角函数进行变换,算 ...
- day22_3-json模块
# 参考资料:# python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园# https://www.cnblogs.com/guojintao/articles/9070485.html# ...
- CCPC 2019 网络赛 HDU huntian oy (杜教筛)
1005 huntian oy (HDU 6706) 题意: 令,有T次询问,求 f(n, a, b). 其中 T = 10^4,1 <= n,a,b <= 1e9,保证每次 a,b互质. ...