Python爬虫连载17-ItemPipeLine、中间件

一、ItemPipeLine

1.爬虫提取出的数据存入item之后,item中保存的数据需要进一步处理,比如:清洗,去重,存储等

2.pipeline需要process_item函数

(1)process_item?:spider提出来的item作为参数出入,同时传入的还有spider;此方法是必须要实现的?;必须返回一个item对象,被丢弃的item不会被之后的pipeline处理

(2)__init__:构造函数

进行一些必要的参数初始化

(3)open_spider(spider)

spider对象被开启的时候调用

(4)close_spider(spider)

spider对象被关闭的时候调用

3.Spider

(1)对应的是文件夹spiders下的文件

(2)__init__:初始化爬虫的名称,start_urls列表

(3)start_requests:生成Requests对象嫁给Scrapy下载并返回response

(4)parse:根据返回的response解析出相应的item,item自动进入到pip?eline;如果需要,解析出url,url自动交给requests模块,一直循环下去

(5)start_request?:此方法仅能被调用一次,读取start_urls内容并启动循环过程

(6)?name:设置爬虫的名字

(7)start_urls:设置开始第一批爬取的url

(8)allow_?domains:spider允许爬取的域名列表

(9)start_request(self):只被调用一次

(10)parse

(11)log:日志记录

二、中间件

1.定义:中间件是处于引擎和下载器中间的一层组件

2.作用:对发出的请求和返回的结果进行预处理

3.?数量:可以有很多个,被按顺序加载执行

4?.位置:在middlewares文件中,需要在settings中设置以便生效

5.编写十分简单

6.必须实现以下一个或者多个方法

(1)process_request(self,request,spider)

在request通过的时候?被调用;必须返回None或者Request或Response或raise IgnoreRequest;

None:scrapy将继续处理该request

Request:scrapy将停止调用process_request并冲洗调度返回的request

Response:scrapy将不会调用其他的process_request或者process_exception,直接将该response作为结果同时会调用process_response函数

(2)process_response(self,request,response,spider)

跟process_request大同小异;每次返回结果的时候会自动调用;可以有多个,?按顺序调用。

三、源码

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

 Python爬虫连载17-ItemPipeLine、中间件

相关推荐