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 : dict或list
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)
注意:
- FormRequest的data提交后是放在请求头的form字段的,也就是表单提交
- 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
总结
详细用法请查看官方文档:请求与响应
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfihbhk
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13