Scrapy请求与响应

Scrapy请求与响应



前言

  • 通常,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


总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不一样的鑫仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值