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

  

Scrapy 中的 Request 对象和 Respionse 对象的更多相关文章

  1. scrapy中的request

    scrapy中的request 初始化参数 class scrapy.http.Request( url [ , callback, method='GET', headers, body, cook ...

  2. scrapy中的Request和Response对象

    前言: 如果框架中的组件比做成是人的各个器官的话,那个Request和Response就是血液,Item就是代谢产物 Request对象: 是用来描述一个HTTP请求,其构造参数有 url 请求的UR ...

  3. [转]scrapy中的request.meta

    作者:知乎用户链接:https://www.zhihu.com/question/54773510/answer/146971644 meta属性是字典,字典格式即{'key':'value'},字典 ...

  4. Scrapy中的Request和日志分析

    Scrapy.http.Request 自动去重,根据url的哈希值,进行去重 属性 meta(dict)  在不同的请求之间传递数据,dict priority(int)  此请求的优先级(默认为0 ...

  5. Scrapy中的Request和Response

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

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

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

  7. 在Struts2的Action中获得request response session几种方法

    转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为se ...

  8. 在SpringMVC中获取request对象

    1.注解法 @Autowired private  HttpServletRequest request; 2. 在web.xml中配置一个监听 <listener> <listen ...

  9. 在SpringMVC中获取request对象的几种方式

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

随机推荐

  1. Python(四)生成器 和 杨辉三角

    学习链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177992 ...

  2. Spring的事务实现原理

    主流程 Spring的事务采用AOP的方式实现. @Transactional 注解的属性信息 name                当在配置文件中有多个 TransactionManager , ...

  3. 【PAT甲级】1070 Mooncake (25 分)(贪心水中水)

    题意: 输入两个正整数N和M(存疑M是否为整数,N<=1000,M<=500)表示月饼的种数和市场对于月饼的最大需求,接着输入N个正整数表示某种月饼的库存,再输入N个正数表示某种月饼库存全 ...

  4. Vue-路由传参query与params

    注明:vue中 $router 和 $route 的区别 //$router : 是路由操作对象,只写对象 //$route : 路由信息对象,只读对象 //操作 路由跳转 this.$router. ...

  5. EasyUI中使用自定义的icon图标

    我们在web开发中为了界面的更加漂亮,我们可能会使用EasyUI框架来帮我们实现一些好看的效果,那么在框架里面提供了很多的样式和图标,但是有时候自带的图标已经满足不了我们啦,这时候我们应该往里面加入我 ...

  6. java 责任链模式的三种实现

    责任链模式 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止.这里就不再过多的介绍什么 ...

  7. html和css的重难点知识

    目录 html总难点总结: 1. 块级标签与内联标签的区别 1.1 块级标签: 1.2 内联标签: 2. 选择器 2.1 定义 2.2 选择器的分类 2.1 选择器的分类 3. css中margin, ...

  8. sql 中u.*什么意思

    i.*  i是一个表的别名,i.*是这个表的所有列,比如 select i.* from customer i; 相当于 select id,name,password from customer;

  9. DOCKER SNAT与DNAT

    映射容器端口到宿主主机的实现 默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器. 容器访问外部实现 容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址.这 ...

  10. 吴裕雄--天生自然TensorFlow2教程:多输出感知机及其梯度

    import tensorflow as tf x = tf.random.normal([2, 4]) w = tf.random.normal([4, 3]) b = tf.zeros([3]) ...