前言:

  如果框架中的组件比做成是人的各个器官的话,那个Request和Response就是血液,Item就是代谢产物

Request对象:

  是用来描述一个HTTP请求,其构造参数有

  1. url
    1. 请求的URL
  2. callback
    1. 回调函数
  3. method
    1. 默认是GET
  4. headers
    1. 字典类型
  5. body
  6. cookies
    1. 字典类型
  7. meta
    1. Request中的元数据字典,dict类型,用来给框架中的其它组件来进行传递消息,比如说中间件Iten、Pipeline。其它组件可以使用request对象的meta属性来进行访问该元数据字典中的参数
  8. encoding
  9. priority
    1. 请求的优先级默认是0,优先级高的就会优先进行下载
  10. dont_filter
    1. 默认是False, 对同一个url地址多次提交下载任务请求,后面请求会被去重过滤器直接过滤掉(避免重复下载资源)。如果将该参数为True,可以让请求避免被过滤。强制进行下载。
  11. errback
    1. 当请求出现异常的时候或者HTTP错误的时候的回调函数

  这里面虽然有很多参数,但是除了url意外其它的都是可选参数,是带有默认值的。在构造Request对象的时候,通常我们只需要传递一个url参数和callback参数,其它的都是可以直接使用默认值就可以了

Response对象:

  是用来描述一个HTTP相应的,Response只是一个基类,根据相应的内容的不同有TextResponse、HTmlResponse、XmlResponse

  当一个页面完成下载的时候,下载器根据HTTP响应头部中的Content-Type信息创建某个Response的子类的对象。我们通常爬取的网页中的内容就是HTML文件,所有创建的也就是HtmlResponse,其中HtmlResponse和XmlResponse是TextResponse的子类。实际上,这三个子类只有细微的差别

  HtmlResponse对象的属性以及方法:

    • url

      • HTTP响应的url地址,str类型
    • status
      • HTTP响应的状态码,int类型
    • headers
      • HTTP响应的头部,字典类型,可以通过get或者getlist方法对其进行访问
    • body
    • text
      • 文本形式的HTTP响应,str类型,是由response.body使用response.encoding解码得到的
    • encoding
    • request
      • 产生该HTTP响应的Request对象
    • meta
        • response.request.meta,在构造Request对象的时候,可以将要传递给回调函数的参数通过meta参数来进行传递;回调函数处理响应的时候,可以通过response.meta来进行取值
    • selector
      • 用于Response提取信息
    • xpath
    • css
    • urljoin
      • 用于构造绝对URL,当传入的URL参数是一个相对地址的时候,根据response.url计算出相应的绝对URL

scrapy中的Request和Response对象的更多相关文章

  1. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  2. springMVC中获取request和response对象的几种方式(RequestContextHolder)

    springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...

  3. 【转】Django中的request与response对象

    关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...

  4. JSP 中的 Request 和 Response 对象

    客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例:response对象包含了响应客户请求的有关信息,但在JSP中 ...

  5. 在springMVC的controller中获取request,response对象的一个方法

    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttr ...

  6. java中获取request与response对象的方法

    Java 获取Request,Response对象方法   第一种.参数 @RequestMapping("/test") @ResponseBody public void sa ...

  7. Scrapy中的Request和Response

    Request Request 部分源码: # 部分代码 class Request(object_ref): def __init__(self, url, callback=None, metho ...

  8. Django中的Request和Response

    接触Django这么久了,从来没有好好学习关于Django中的Request和Response对象.借着文件上传下载的相关工作,现在总结一下也不错. 当一个页面请求过来,Django会自动创建一个Re ...

  9. 在SpringMVC中操作Session、Request、Response对象

    示例 @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper user ...

随机推荐

  1. sql还原数据库时候改变数据库名

    需求:在做图书馆数据整合时候,由于有两个校区,用的是分离开的同一个数据库,数据库名字都一样的,现在我要整合在一起,我的想法是把两个数据库先还原到我本地,用写好的脚本整合到一起.所以,我还原两个数据库时 ...

  2. Map、可变参数、静态导入、Collections、Arrays、集合嵌套

    Map双列集合 key 键 value 值 方法: put(K, V) //判断key值是否相等,相等,覆盖元素,不相等,存储 remove(K) Map集合的遍历(不要看到java提供了很多方法做一 ...

  3. 分享一份Java架构师学习资料,2019年最新整理!

    分享一套不错的架构师学习参考资料,免费领取的,无任何套路! 关注Java大后端公众号,在后台回复关键字:大大,即可免费领取,觉得资料不错,转发给其他朋友呗- 长按关注Java大后端公众号领取.

  4. 01_springboot2.x之springboot入门

    1.简介 Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用. 优点: 1.简化Spring应用开发的一个框架: 2.整个S ...

  5. POJ 1873 /// 状压+凸包

    题目大意: 国王有一片森林,巫师需要从所有树中选出一些做成围栏把其他树围起来, 每棵树都有其对应的价值 v 和能作为围栏的长度 l 要求最小价值,若存在多种最小价值的方案则选择余下长度更少的 树木较少 ...

  6. java_缓冲流(字节输出流)

    缓冲流分为: 字节缓冲流:BufferedIntputSream(字节缓冲输出流),BufferdOutputStream(字节缓冲输入流) 字符缓冲流:BufferedReader(字符输入缓冲流) ...

  7. 【转载】Kafka介绍及升级经验分享

    http://blog.talkingdata.net/?p=3165 背景 当时的现状:开始使用Kafka的时候,使用的版本是0.7.2,当时的目的是为了替代kestrel,主要是使用Kafka来做 ...

  8. Android 开发 MediaRecorder使用Camera1配合录制视频

    前言 MediaRecorder可以不依靠Camera API 实现视频的录制,但是如果需要切换摄像头/设置对焦/选择分辨率等等就需要Camera来参与配合录制视频.这篇博客将介绍使用Camera1来 ...

  9. CF961F k-substring

    题意:给你一个字符串(sl<=1e6),问每一个起点到1和终点到sl距离相等的子串的最长不等于串长的border. 标程: #include<cstdio> #include< ...

  10. LoadRunner如何调用外部函数

    LoadRunner如何调用外部函数 使用 VuGen 时,可以调用在外部 DLL 中定义的函数.通过从脚本调用外部函数,可以降低脚本的内存使用量以及总体运行时间.要调用外部函数,需要加载定义了该函数 ...