请求和响应
Scrapy的Request和Response对象用于爬取网站。
流程图Request源码
Request源码Request对象:
Request
对象表示一个HTTP请求,它通常是在爬虫生成,并由下载执行,从而生成Response 有请求才有响应
Request
对象在我们写爬虫,爬取一页的数据需要重新发送一个请求的时候调用。这个类需要传递一些参数,其中比较常用的参数有:
-
url (string)
这个request对象发送请求的url。 -
callback(callback)
在下载器下载完相应的数据后执行的回调函数。 -
method (string)
请求的方法。默认为GET方法,常用还有POST
,注意是大写
。 -
headers(dict)
请求头,对于一些固定的设置,放在settings.py
中指定就可以了。对于那些非固定的,可以在发送请求的时候指定。 -
body(str或unicode)
请求体。如果unicode传递了a,那么它被编码为 str使用传递的编码(默认为utf-8)。如果 body没有给出,则存储一个空字符串。不管这个参数的类型,存储的最终值将是一个str(不会是unicode或None)。 -
cookie(dict或list)
请求cookie。这些可以以两种形式发送。 -
meta(dict)
比较常用。用于在不同的请求之间传递数据用的。 -
encoding
编码。默认的为utf-8,使用默认的就可以了。 -
priority(int)
此请求的优先级(默认为0)。调度器使用优先级来定义用于处理请求的顺序。具有较高优先级值的请求将较早执行。允许负值以指示相对低优先级。 -
dont_filter(boolean)
表示不由调度器过滤。在执行多次重复的请求的时候用得比较多, 默认为False。 -
errback(callback)
在发生错误的时候执行的函数。
Response对象:
Response
对象一般是由Scrapy给你自动构建的。因此开发者不需要关心如何创建Response
对象,而是如何使用他。Response
对象有很多属性,可以用来提取数据
的。主要有以下属性:
-
meta
从其他请求传过来的meta
属性,可以用来保持多个清求之向的数据连接。 -
encoding
返回当前字符串编码和解码的格式。 -
text
将返回来的数据为unicode
字符串返回。 -
body
将返回来的数据作为bytes
字符串返回。 -
xpath
xapth迭代器。 -
css
css迭代器。
发送POST靖求:
有吋候问想要在请求数据的吋候发送POST
请求,那么这吋候需要使用Request的子类FormRequest 来实现。如果想要在爬虫一开始的时候就发送POST
请求,那么需要在爬虫类中重写 start. requests(self)
方法,并且不再调用 start_urls
里的 url
。
更多Python实战源码请关注 朝南而行 公众号
朝南而行上一篇:Scrapy-redis分布式组件之redis数据库
下一篇:Scrapy爬虫框架之下载器中间件(可设置随机请求头和随机代理IP)
网友评论