1、Request 对象

  Request 对象用来描述一个 HTTP 请求,下面是其构造方法的参数列表

  

Request(url, [, callback, method='Get', headers, body, ...])

下面一次介绍这些参数

  (1) url (必选)

    请求页面的 url 地址, bytes 或 str 类型

    如 ‘http://www.python.org/doc’

  (2)callback

    页面解析函数, Callback 类型,Request 对象请求的页面下载完成后,由该参数指定的页面解析函数被调用,如果未传该参数,默认调用 Spider 的 parse 方法

  (3)method

    HTTP 请求的方法, 默认为 “GET”

  (4)headers

    HTTP 请求头部字典,dict 类型,例如{‘Accept’:‘text/html’, 'Uesr-Agent': Mozilla/5.0}。如果其中某项的值为 None,就表示不发送该项 HTTP 头部

    例如{‘Cookie’:None},禁止发送Cookie

  (5)body

    HTTP 请求的正文,bytes 或 str 类型

  (6)cookies

    Cookie信息字典,dict类型,例如{‘currency’:‘USD’, ‘count’:‘UY’}

  (7)meta

    Request 的元数据字典,dict 类型,用于给框架中其他组件传递信息,比如中间件 Item Pipline,其他组件可以使用Request 对象的 meta 属性访问该元数据字典

  (8)encoding

    url 和 body 参数的编码默认为 ‘utf-8’,如果传入的 url 或 body 参数是 str 类型,就使用该参数进行编码

  (9)priority

    请求的优先级默认值为0,优先级高的请求有限下载。

  (10)dont_filter

    默认情况下(dont_filter=False),对同一个 url 地址多次提交下载请求,后面的请求会被去重过滤器过滤(避免重复下载)。如果将该参数置为 True ,可以使

    请求避免被过滤,强制下载,例如,在多次爬取一个内容随时间而变化的页面时(每次使用相同的 url ),可以将其参数置为 True

  (11)errback

    请求出现异常或者出现 HTTP 错误是(如404页面不存在)的回调函数

虽然参数很多,但除了 url 参数外,其他都带有默认值,在构造 Request 对象时,通常我们只需传入一个 url 参数或再加一个 Callback 参数,其他使用默认值即可

  在实际应用中,我们几乎只用 Request 的构造器创建对象,但也可以根据需求访问 Request 对象的属性,常用的有一下几个:

    (1)url

    (2)method  

    (3)headers

    (4)body

    (5)meta

    这些参数和构造器参数相对应

2、Response 对象

  Response 对象用来描述一个 HTTP 响应,Response 只是一个基类,根据响应内容的不同有如下子类:

    (1) TextResponse

    (2)HtmlResponse

    (3)XmlResponse

    当一个页面下载完毕时,下载器依据 HTTP 响应头部中的 Content-Type 信息创建某个 Response 的子类对象。我们通常爬取的网页,其内容是 HTML 文本,创建的便是 HtmlResponse对象,其中 HtmlResponse 和 XmlResponse 是 TextResponse 的子类。实际上,在3个子类只有细微的差别,这里以 HtmlResponse 为例进行讲解。

  ·下面介绍 HtmlResponse 随想的属性和方法:

    (1)url

      HTTP 响应的 url 地址,str 类型

    (2)status

      HTTP 响应状态码, int 类型,例如 200, 404

    (3)headers

      HTTP 响应的头部,类字典类型,可以调用 get 或 getlist 方法对齐进行访问。

      

response.headers.get('Content-Type')
response.headers.getlist('Set-Cookie')

    (4)body

      HTTP 响应正文,bytes 类型

    (5)text

      文本形式的 HTTP 响应正文,str 类型,他是由 response.body 使用response.encoding 解码得到的;

responsne.text = response.body.decode(response.encoding)

    (6)encoding

       HTTP 响应正文的编码,它的值可能是从 HTTP 响应头部或正文中解析出来的

    (7)request

      产生该 HTTP 响应的 Request 对象

    (8) meta

      即 response.request.metra,在构造 Request 对象时,可将要传递给响应处理函数的信息通过 meta 参数传入,响应处理函数处理响应是,通过response.meta 将信息取出

    (7)selector

      Selector 对象用于在 Response 中提取数据

    (8)xpath(query)

      使用 XPath 选择器在 Response 中提取数据,实际上它是response.selector.xpath 方法的快捷方式

    (9)css(query)

      使用 CSS 选择器在 Response 中提取数据,实际上它是response.selector.css 方法的快捷方式

    (10)urljoin(url)

      用于构造绝对 url,当传入的 url 参数是一个相对地址时,根据response.url 计算出响应的绝对 url

      例如:response.url 为 http://www.example.com/a, url为 b/index.html,调用response.urljoin(url)的结果为 http://www.example.com/a/b/index.html

    虽然 HtmlResponse 对象有很多属性,但最常用的是以下3个方法:

      (1)xpath(query)

      (2)css(query)

      (3)urljoin(url)

      前两个方法用于提取数据,后一个方法用于构造绝对 url

  

转载于:https://www.cnblogs.com/jcjc/p/10905391.html

Scrapy 中的 Request 对象和 Respionse 对象相关推荐

  1. scrapy中的request对象

    1. Requtes 注意 method = 'GET'   headers = None  为字典类型   cookies = None  为字典类型 class Request(object_re ...

  2. scrapy中的Request的用法

    爬虫中scrapy.Request的更多参数_黑马蓝汐的博客-CSDN博客_scrapy.request()参数

  3. 玩转 Scrapy 框架 (二):Scrapy 架构、Request和Response介绍

    目录 一.Scrapy 架构及目录源码分析 二.Request 和 Response 介绍 2.1 Request 2.2 Response 三.实例演示 3.1 POST 请求 3.2 GET 请求 ...

  4. Action中取得request,session的四种方式

    Action中取得request,session的四种方式 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象 ...

  5. Scrapy中的splash的安装应用

    Scrapy中的splash的安装应用 因为要去抓取部分经过JavaScript渲染的网页数据,所以使用scrapy中的Request返回的是没有经过渲染的网页代码, 因此我们就要运用Scrapy中的 ...

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

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

  7. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

  8. php request对象,PHP 中TP5 Request 请求对象的实例详解

    PHP 中TP5 Request 请求对象 public/index.php app\index\controller\Index.php <?php namespace app\index\c ...

  9. springMVC中获取request 对象

    1.最简单的方式(注解法) @Autowired private HttpServletRequest request; 2.最麻烦 a. 在web.xml中配置一个监听 <listener&g ...

  10. java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象

    java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象 一.问题描述 1.在java定时任务中,使用 @Scheduled 注 ...

最新文章

  1. 为什么我还没 Fix 你的 Issue
  2. python中统计单词出现的次数_python统计文章中单词出现次数实例
  3. 理解严格模式下JavaScript的this指向的变化
  4. CentOS报错:“Could not resolve host: mirrorlist.centos.org; Unknown error“
  5. 查看计算机用户修改密码时间,使用ldap语句查询某时间后没改密码的用户
  6. Cesium场景导出为图片
  7. 编译安装httpd-2.4.12
  8. css简单的数学运算
  9. 5G 基站功耗,到底有多可怕?
  10. windows 安装nginx
  11. fatal error: libmemcached/memcached.h: No such file or directory
  12. java官方网站下载_java下载 7.0 官方版
  13. jdk32位安装包下载_iTunes 企业版12.6.5,可下载应用安装包版本和支持升级iOS 12
  14. VB.net 调用FFmpeg简单处理视频(类库——6)
  15. 电脑自动出现html文件,当前页面发生脚本错误 电脑总出现当前页面脚本错误怎么办?...
  16. Kali Linux——小白安装过程(2021)
  17. 独立看门狗与窗口看门狗
  18. 黑苹果相关(说好的不折腾)
  19. 新电脑怎么把计算机放在桌面,新安装的Win10怎么将“我的电脑”放在桌面
  20. linux下挂载光驱方法,Linux下光驱挂载技巧

热门文章

  1. 使用python原生态的min和max函数实现升序排序和降序排序
  2. php考试试卷,php测试题(一)
  3. 冯诺依曼计算机主机,冯诺依曼计算机的基本思想是什么?
  4. chrome 插件开发各种功能demo_Chrome扩展开发-编写一个浏览器插件
  5. FISCO BCOS 跨链WeCross ppt
  6. css叠层_CSS 理解样式层叠
  7. 导出jar包和api文档
  8. 设计模式之GOF23原型模式02
  9. php地图,php调用google地图
  10. linux 创建用户/添加用户/用户组添加修改删除(ubuntu/centos)