引言
有request才有response,即有请求,服务器才能做出响应。
scrapy中,request与response的工作原理为,爬虫生成requset对象,request将请求参数发送给服务器,服务器根据请求参数做出相应的响应(即生成response对象)。response根据request的请求,将响应的数据包发送给爬虫。
request
request有爬虫生成,表示一个HTTP请求,由下载器执行,从而生成response对象。request在我们写出代码后,执行时创建。
request常用的参数有:
- url :这个request对象发送请求的url
- callback:在下载器下载完相应的数据后执行的回调函数。
- method:请求的方法。默认为GET方法,常用还有 POST ,大写。
- headers:请求头,对于一些固定的设置,放在 settings.py 中指定就可以了。对于那些非固定的,可以在发送请求的时候指定。
- body:请求体。如果unicode传递了a,那么它被编码为 str使用传递的编码(默认为utf-8)。如果 body没有给出,则存储一个空字符串。不管这个参数的类型,存储的最终值将是一个str(不会是unicode或None)。
- cookie:请求cookie。这些可以以两种形式发送。
- meta:比较常用。用于在不同的请求之间传递数据用的。
- encoding: 编码,默认的为utf-8,使用默认的就可以了。
- priority:此请求的优先级(默认为0)。调度器使用优先级来定义用于处理请求的顺序。具有较高优先级值的请求将较早执行。允许负值以指示相对低优先级。
- dont_filter:表示不由调度器过滤。在执行多次重复的请求的时候用得比较多, 默认为False。
- errback: 在发生错误的时候执行的函数。
response
response由scrapy自动给出,编程者不必关心他的来由,只需要掌握以下属性即可:
- meta:从其他请求传过来的meta 属性,可以用来保持多个清求之向的数据连接。
- encoding:返回当前字符串编码和解码的格式。
- text:将返回来的数据为 unicode 字符串返回。
- body:将返回来的数据作为 bytes 字符串返回。
- xpath:xapth迭代器。
- css:css迭代器。
如果你还想了解更多信息,你可以直接打开安装的scrapy目录,查看里面的源代码即可。