Scrapy.Request类

Request类是一个http请求的类,对于爬虫而言是一个很重要的类。通常在Spider中创建这样的一个请求,在Downloader中执行这样的一个请求。同时也有一个子类FormRequest继承于它,用于post请求。
在Spider中通常用法: yield scrapy.Request(url = ‘zarten.com’)

对象初始化方法

class scrapy.Request(url[, callback, method='GET', headers, body, cookies, meta, encoding='utf-8', priority=0, dont_filter=False, errback, flags])
参数说明:

  1. - url:需要请求的url地址
  2. - callback:回调函数,用于接收请求后的返回信息response,若没指定,则默认为parse()函数
  3. - methodhttp请求的方式,默认为GET请求,一般不需要指定。若需要发送POST请求,用FormRequest类(Request的子类)即可
  4. - headers:请求头信息,一般在settings中设置即可,也可在middlewares中设置。接收字典类型的参数值
  5. - bodystr类型,为请求体,一般不需要设置(getpost其实都可以通过body来传递参数,一般不用)
  6. - cookies:设置请求要携带的cookie数据。

参数类型为:dict或list类型:

  1. - dict方式(namevalue的键值对):

cookies **=** {'name1' : 'value1' , 'name2' : 'value2'}

  1. - list方式
  1. cookies = [
  2. {'name': 'Zarten', 'value': 'my name is Zarten', 'domain': 'example.com', 'path': '/currency'}
  3. ]
  1. - encoding:请求的编码方式,默认为“utf-8
  2. - priorityint类型,指定请求的优先级,数字越大优先级越高,默认为0
  3. - dont_filter:默认为False,若设置为True,表明这次请求不会被过滤(不会被调度器去重)
  4. - meta:可用于自定义从RequestResponse传递参数,也可以通过meta属性进行代理的设置,这个参数一般也可在middlewares中处理。

yield scrapy.Request(url = 'zarten.com', meta = {'name' : 'Zarten'})
在Response中可以接受meta中的数据
my_name = response.meta['name']

代理设置:设置代理,一般在middlewares中设置
request.meta['proxy'] = 'https://' + 'ip:port'

常用方法

  • def start_requests(self):在爬虫启动时,根据start_urls列表中的URL进行Request请求对象的创建。(可以对该方法进行重写,如:需要在爬虫开始时就发送post请求的时候,就可以通过重写该方法进行实现)
  • parse(self, response):解析响应内容,生成Item对象和Request对象

Scrapy.FormRequest类

FormRequest类是Request类的子类,普通请求使用scrapy.Request类就可以实现,但是遇到模拟表单Ajax提交post请求的时候,Request类就不如 子类 FormRequest类方便了,因为他自带 formdata 参数,专门用来设置表单字段数据,即填写账号、密码,实现登入,默认method也是POST
[

](https://blog.csdn.net/qq_43546676/article/details/89043445)
在Spider中通常用法: yield scrapy.FormRequest(url=’’, method=‘POST/GET’, formdata={})

对象初始化方法

class scrapy.FormRequest(url[, **formdata**, callback, method='GET', headers, body, cookies, meta, encoding='utf-8', priority=0, dont_filter=False, errback, flags])
参数说明:相较于scrapy.Request的初始化,scrapy.FormRequest的初始化参数就多了一个 **formdata**参数。

  1. - **formdata:表单提交的数据,即**`**POST**`**请求的参数。数据类型为dict**

scrapy.http.Response类

Response类用于http下载返回信息的类,它有几个子类:TextResponse 、 HtmlResponse 、 XmlResponse。
其中 parse(self, response) 中的response就是HtmlResponse 类型的。

常用属性

  • body:响应的主体,即网页源代码。返回的数据类型是:bytes,需要使用decode(‘utf-8’)方法将其解码为字符串类型的数据。
  • meta:用于接收Request对象发送过来的meta属性数据
  • url:响应的URL地址
  • status:响应状态码
  • headers:响应头信息
  • ip_address:响应服务器的IP地址
  • protocol:HTTP协议类型
  • request:请求对象