• scrapy中的Request和Response对象


    前言:

      如果框架中的组件比做成是人的各个器官的话,那个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
  • 相关阅读:
    Linux命令ll输出后各个字段的含义
    常用的Linux指令
    纪念逝去的2016
    Grails默认首页的修改
    js中构造字符串若放入Grails中gsp的<g:link>标签出错
    Grails的redirect无法跳转时的一个可能原因
    Grails连接外部数据库注意事项Could not determine Hibernate dialect for database name [Oracle]!
    ICPC2020济南A Matrix Equation
    最后的挣扎
    [省选联考 2020 A/B 卷] 信号传递
  • 原文地址:https://www.cnblogs.com/tulintao/p/11697844.html
Copyright © 2020-2023  润新知