上节课我们学习了中间件,知道了怎么通过中间件执行反反爬策略。本节课主要介绍Scrapy框架的request对象和response对象
通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达下载程序,后者执行请求并返回一个Response对象,该对象返回到发出请求的爬虫程序
Request类和Response类都有一些子类,子类用来添加基类中不必要的功能。这些在下面的请求子类和响应子类中描述
Request对象
一个Request对象表示一个HTTP请求,它通常是在爬虫中生成,并由下载器执行,从而返回Response
基础参数 :
url
——请求的url
callback
——请求回来的reseponse处理函数,也叫回调函数
meta
——用来在“页面”之间传递数据
- meta是一个dict,主要用来在解析函数之间传递值
- 比如:在
parse()
给item某些字段提取了值,并且提取出了一个新的URL,item另外一些字段需要在这个新的URL的response里面提取,为此定义一个parse_item()
解析函数用于处理这个response。在用request发送这个新的URL请求的时候,使用parse_item()作为回调函数,并使用meta传递原来已经提取的item字段给parse_item()里的response- Request对象接受一个meta参数,一个字典对象,同时Response对象有一个meta属性可以取到相应request传过来的meta
- 一旦此参数被设置, 通过参数传递的字典将会被浅拷贝
headers
——页面的headers数据
cookies
——设置页面的cookies
基础高级参数
encoding
——请求的转换编码
priority
——链接优先级
- 优先级越高,越优先爬取,但不可以序列化
序列化 (Serialization)
:将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象
dont_filter
——强制不过滤
scrapy会对request的URL去重,加上dont_filter则告诉它这个URL不参与去重