Scrapy学习笔记九--Downloading and processing files and images
2017-04-13 16:01
405 查看
item pipelines 对爬取的数据进行处理,如下载图片,保存等等
Files Pipeline 处理文件
Images Pipeline 处理图片下载
每个pipelines都需实现以下特色:
如果最近有下载记录,避免重复下载
指定存储media(爬取的数据)的路径
images Pipeline 增加了额外的功能:
将下载的图片转化为同一的格式JPG和RGB
生成缩略图
检查图片长宽确保满足大小的限制
images pipeline 提供内置的队列(当前创建下载任务—URLmedia)并保留在队列中,然后从Response中取得相同的media并连接到队列,避免多个项目(item)共享多次下载相同的media——-队列中的URL只提供一次下载
通过spider爬取数据item,并把它放入file_urls字段中
spider 返回item 并传入 item pipeline
当item传入FilesPipeline,file_urls字段中URL就要被安排进行下载,这个过程中scrapy的调度程序(Scheduler)和下载器(downloader)发挥作用(此过程中Scheduler和Downloader会被重复调用),他们具有较高的优先级,会在爬取其他pages前执行, item会保持‘lock’状态直到下载完成或者因为其他原因失败
当所有files都下载完成,可以把结果填充在其他的field中(如 files)。另外this field 会把下载的文件信息,如下载地址,从file_url中取出的原始URL或者file checksum保存在一组字典容器中。如果下载过程中出错,会产生错误日志,下载的文件不会呈现在 files 字段中
优点 : 你可设置些额外功能 ,如:产生缩略图或者过滤图片的大小
Pillow(取代PIL)使用Images Pipeline所需要的组件(产生缩略图,或者设定JPEG/RGB 格式)
eg.1
eg.2
2.完成1步骤后,需设置有效路径保存下载结果。未设置时,media_pipeline不工作
4000
eg.1
eg.1
使用SHA1 hash作为文件的名字
待续
Files Pipeline 处理文件
Images Pipeline 处理图片下载
每个pipelines都需实现以下特色:
如果最近有下载记录,避免重复下载
指定存储media(爬取的数据)的路径
images Pipeline 增加了额外的功能:
将下载的图片转化为同一的格式JPG和RGB
生成缩略图
检查图片长宽确保满足大小的限制
images pipeline 提供内置的队列(当前创建下载任务—URLmedia)并保留在队列中,然后从Response中取得相同的media并连接到队列,避免多个项目(item)共享多次下载相同的media——-队列中的URL只提供一次下载
Using the Files Pipeline (下载文件)
当使用FilesPipeline流程是这样的:通过spider爬取数据item,并把它放入file_urls字段中
spider 返回item 并传入 item pipeline
当item传入FilesPipeline,file_urls字段中URL就要被安排进行下载,这个过程中scrapy的调度程序(Scheduler)和下载器(downloader)发挥作用(此过程中Scheduler和Downloader会被重复调用),他们具有较高的优先级,会在爬取其他pages前执行, item会保持‘lock’状态直到下载完成或者因为其他原因失败
当所有files都下载完成,可以把结果填充在其他的field中(如 files)。另外this field 会把下载的文件信息,如下载地址,从file_url中取出的原始URL或者file checksum保存在一组字典容器中。如果下载过程中出错,会产生错误日志,下载的文件不会呈现在 files 字段中
Using the Images Pipeline (下载图片)
和files类似。 使用image_url 和 images 字段优点 : 你可设置些额外功能 ,如:产生缩略图或者过滤图片的大小
Pillow(取代PIL)使用Images Pipeline所需要的组件(产生缩略图,或者设定JPEG/RGB 格式)
Enabling your Media Pipeline (如何使pipeline生效)
1.要使你的media pipeline生效需要对你项目中 "ITEM_PIPELINES setting" 进行配置 :eg.1
ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1}
eg.2
ITEM_PIPELINES = {'scrapy.pipelines.files.FilesPipeline': 1}
2.完成1步骤后,需设置有效路径保存下载结果。未设置时,media_pipeline不工作
4000
eg.1
FILES_STORE = '/path/to/valid/dir'
eg.1
IMAGES_STORE = '/path/to/valid/dir'
Supported Storage
File system storage使用SHA1 hash作为文件的名字
< IMAGES_STORE >/full/3afec3b4765f8f0a07b78f98c07b83f013567a0a.jpg #<IMAGES_STORE> 是在IMAGES_STORE setting 定义的 #full 是子目录将完整图片和缩略图区分开
待续
相关文章推荐
- 《APUE》Chapter 4 Files and directories (学习笔记加上自己的代码)
- 《APUE》chapter 6 System Data files and information 学习笔记(加上自己的代码)
- 学习实战完全笔记--JavaSE----流与文件(Streams and Files)
- linux 学习笔记之 Files and Directories
- Learning Spark 学习笔记 第二章 Downloading Spark and Getting Started
- TOPOGRAPHIC LASER RANGING AND SCANNING Principles and Processing学习笔记
- 《APUE》Chapter 4 Files and directories (学习笔记加上自己的代码)
- javascript 学习笔记 《JavaScript And DHTML Cookbook》2
- Java Auto Boxing and Unboxing -Java 学习笔记 (23)
- Pro visual c++/cli and .net 2.0 platform2 学习笔记(4 本书简介)
- Lua入门系列----pil学习笔记之 Type and Values
- Pro visual c++/cli and .net 2.0 platform2 学习笔记(8第三章 面向对象的C++/CLI===1)
- Pro visual c++/cli and .net 2.0 platform2 学习笔记(10 第四章 高级C++/CLI)
- WTL 学习笔记 -- Property Sheets and Wizards
- EJB3 and Hibernate Annotations 学习笔记(一)
- Partner Link Types, Partner Links, and Endpoint References(学习笔记)
- Java核心思想学习笔记002(Static Fields and Methods)
- 学习笔记-PPP and PPPoE基本概念
- Pro visual c++/cli and .net 2.0 platform2 学习笔记(9第三章 面向对象的C++/CLI==2)
- VxWorks 学习笔记-IO and File System