请求和响应
Scrapy的Request和Response对象用于爬取网站。

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字符串返回。xpathxapth迭代器。csscss迭代器。
发送POST靖求:
有吋候问想要在请求数据的吋候发送POST请求,那么这吋候需要使用Request的子类FormRequest 来实现。如果想要在爬虫一开始的时候就发送POST请求,那么需要在爬虫类中重写 start. requests(self) 方法,并且不再调用 start_urls里的 url。
上一篇:Scrapy-redis分布式组件之redis数据库
下一篇:Scrapy爬虫框架之下载器中间件(可设置随机请求头和随机代理IP)