Scrapy请求与响应

Scrapy请求与响应


目录

  • Scrapy请求与响应
  • 前言
  • 一、Request
    • 请求子类(处理POST请求)
      • FormRequest
      • JsonRequest
  • 二、Response
    • 响应子类
      • TextResponse
      • HtmlResponse,XmlResponse
  • 总结


前言

  • 通常,scrapy在工作时,很大一部分都是在构造request请求和解析response对象
  • Request对象在spider中生成并通过系统传递,直到它们到达下载器
  • 下载器执行请求并返回一个Response对象,该对象返回给发出请求的spider。

一、Request

Request是scrapy.http.Request的实例,包含请求的基本信息

Request参数如下

url:请求的网址

callback:回调函数,不指定默认调用parse()。回调函数一般位于spider中,有一个参数为response,代表request得到的响应

method:发起请求的方法,默认GET

meta:用于携带额外的信息,dict形式,例如:request.meta('proxy') = 192.168.1.1

body:请求正文

headers:dict形式

cookies : dictlist 

encoding:默认utf-8

priority:请求的优先级(默认为0),用于调度器调度使用,越大越优先

dont_filter :对请求是否进行去重,默认false。

errback:如果在处理请求时引发异常,将调用该函数。

flags:发送到请求的标志,可用于日志记录

cb_kwargs:带有任意数据的字典,将作为关键字参数传递给请求的回调。

请求子类(处理POST请求)

FormRequest

scrapy.FormRequest(url[, formdata])
formdata需要提交的表单数据
此外,还有FormRequest.from_response方法

FormRequest.from_respons()属性如下:
response:包含 HTML 表单的响应,该表单将用于预填充表单字段

formname:如果给定,将使用 name 属性设置为此值的表单。

formid:如果给定,将使用 id 属性设置为此值的表单。

formxpath:如果给定,将使用与 xpath 匹配的第一个表单。

formcs:如果给定,将使用与 css 选择器匹配的第一个表单。

formnumber:当响应包含多个表单时,要使用的表单数。第一个(也是默认值)是0.

formdata:dict形式,表单数据中要覆盖的字段。

clickdata:dict形式,用于查找单击的控件的属性。

dont_click:bool,如果为 True,则无需单击任何元素即可提交表单数据。

JsonRequest

scrapy.http.JsonRequest
参数:url,data

使用 JsonRequest发送 JSON POST 请求:
data = {
    'name1': 'value1',
    'name2': 'value2',
}
yield JsonRequest(url='http://www.example.com/post/action', data=data)

注意:

  1. FormRequest的data提交后是放在请求头的form字段的,也就是表单提交
  2. JsonRequest的data提交后是放在请求头的json字段的,也就是发送json数据

二、Response

当我们的request经过下载器,就会返回相应的response。

属性如下:

url:对应的url
status:状态码
headers:相应的标头
body:响应正文,bytes类型
flags:
request:此响应对应的请求
certificate: 代表服务器 SSL 证书的对象。
ip_address:响应的服务器的 IP 地址。
protocol:响应的协议,例如:“HTTP/1.0”、“HTTP/1.1”、“h2”

响应子类

TextResponse

属性如下:

text:响应正文,str类型
encoding:编码,默认utf-8
selector:可以用于提取响应结果
css:用css选择器进行内容提取,等同于selector的css
xpath:用xpath进行内容提取,等同于selector的xpath
json:将text属性转为json

scrapy.http.TextResponse

HtmlResponse,XmlResponse

TextResponse的子类
scrapy.http.HtmlResponse
scrapy.http.XmlResponse


总结

详细用法请查看官方文档:请求与响应

你可能感兴趣的:(scrapy框架,python)