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

原文地址:https://www.cnblogs.com/ruigege0000/p/12571702.html

时间: 2024-11-05 16:10:53

Python爬虫连载17-ItemPipeLine、中间件的相关文章

小白学 Python 爬虫(17):Requests 基础使用

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基

Python爬虫连载1-urllib.request和chardet包使用方式

一.参考资料 1.<Python网络数据采集>图灵工业出版社 2.<精通Python爬虫框架Scrapy>人民邮电出版社 3.[Scrapy官方教程](http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html) 4.[Python3网络爬虫](http://blog.csdn.net/c406495762/article/details/72858983 二.前提知识 url.http协议.web前端:html\

python爬虫Scrapy框架之中间件

Downloader Middleware处理的过程主要在调度器发送requests请求的时候以及网页将response结果返回给spider的时候, 所以说下载中间件是结余Scrapy的request/response处理的钩子, 用于修改Scrapy request和response. 编写自己的下载器中间件 : 编写下载器中间件, 需要定义下一或者多个方法的python类 新建一个关于爬取httpbin.org网站的项目 scrapy startproject httpbintest cd

Python爬虫连载5-Proxy、Cookie解析

一.ProxyHandler处理(代理服务器) 1.使用代理IP,是爬虫的常用手段 2.获取代理服务器的地址: www.xicidaili.com www.goubanjia.com 3.代理用来隐藏真实访问中,代理不允许频繁访问某一个固定网站,所以代理一定要很多很多. 4.基本使用步骤: (1)设置代理地址 (2)创建PoxyHandler (3)创建Opener (4)安装Opener """ 使用代理访问百度首页 ? """ from ur

Python爬虫连载7-cookie的保存与读取、SSL讲解

一.cookie的保存与读取 1.cookie的保存-FileCookie.Jar from urllib import request,parse from http import cookiejar #创建cookiejar实例 filename = "cookie.txt" cookie = cookiejar.MozillaCookieJar(filename) #生成cookie的管理器 cookie_handler = request.HTTPCookieProcessor

Python爬虫连载10-Requests模块、Proxy代理

一.Request模块 1.HTTP for Humans,更简洁更友好 2.继承了urllib所有的特征 3.底层使用的是urllib3 4.?开源地址:https://github.com/requests/requests 5.中文文档?:https://requests.readthedocs.io/zh_CN/latest/ 6.先安装这个包:pip install requests 7.get请求 (1)requests.get() (2)requests.request("get&

Python爬虫连载2-reponse\parse简介

一.reponse解析 urlopen的返回对象 (1)geturl:返回网页地址 (2)info:请求反馈对象的meta信息 (3)getcode:返回的http code from urllib import request import chardet """ 解析reponse """ if __name__ == "__main__": url = "https://www.baidu.com"

小白学 Python 爬虫(37):爬虫框架 Scrapy 入门基础(五) Spider Middleware

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基

小白学 Python 爬虫(18):Requests 进阶操作

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基