Scrapy1.5基本概念(九)——请求和响应(Requests and Responses)

Scrapy中的Request和Response对象用于爬虫与下载器之间的交互。Request对象包含URL、回调函数、请求头、body等信息,可以指定回调、errback处理结果及异常。Response对象代表HTTP响应,包括状态码、头信息和正文。Request有FormRequest子类,用于处理表单数据,而Response有TextResponse、HtmlResponse和XmlResponse子类,方便处理文本内容。
摘要由CSDN通过智能技术生成

本文为译文,原文见地址:https://docs.scrapy.org/en/latest/topics/request-response.html

请求和响应(Requests and Responses)

Scrapy使用Request和Response对象来爬行web站点。

通常来说,Request对象在爬虫中生成,并且系统中传递,直到它们到达下载器(Downloader),下载器执行请求并返回Response对象,Response对象返回到发出请求的爬虫。

Request和Response类都可以有子类,这些子类添加了基类中不是必须的功能。后续会有介绍。

Request对象

class scrapy.http.Request(url[, callback, method=‘GET’, headers, body, cookie, meta, encoding=‘utf-8’, priority=0, dont_filter=False, errback, flags])

一个Request对象代表一个HTTP请求,Request对象通常在爬虫(Spider)中生成,并且由下载器(Downloader)执行,最终的结果生成一个Response对象。

参数:

  • url(string)- 该请求的url

  • callback(callable)- 回调函数,调用这个函数时的第一个参数,是该请求的响应(下载后)。想要获取更多信息,请见后面的传递附加数据到回调函数。如果一个Request没有指定callback,那么将默认使用爬虫的parse()函数。注意,如果在处理过程中出现了异常,那么将会调用errback而不是callback。

  • method(string)- 该请求的HTTP函数。默认为’GET’。

  • meta(dict)- Request.meta属性的初始值。如果给定了该值,该参数传递的字典将被浅拷贝。

  • body(str或者unicode)- 请求的body。如果传递了一个unicode,那么将使用传递的encoding参数(默认为utf-8)来将其转码为str。如果body没有给定,将存储一个空字符串。不论这个参数的类似那个是什么,最终存储的都将是一个str(不管unicode或是None)。

  • header(dict)- 该请求的头。这个字典的值可以是字符串(单独值的头)或者列表(多个值的头)。如果传递了None作为值,HTTP头将根本不会被发送。

  • cookies(dict或者list)- 请求的cookies。可以是以下两种格式。

    1. 使用字典:

      request_with_cookies = Request(url='http://www.example.com', cookies={
             'currency': 'USD', 'country': 'UY'})
      
    2. 使用字典的列表:

      request_with_cookies = Request(url='http://www.example.com', cookies=[{
             'name': 'currency', 'value': 'USD', 'domain': 'example.com', 'path': '/currency'}])
      

后一种形式允许自定义cookie的domain和path属性。这只有在cookie被保存,以备后续的请求可以使用。

当一些站点返回了cookies(在响应中),这些cookie将被存储在domain的cookie中,并且后续的请求中都需要带有这些cookie。这是任何常用的web浏览器都带有的典型行为。然而,如果为了某些原因,你希望避免合并已经存在的cookie,你可以在Request.meta中设置dont_merge_cookies关键字为True来指示Scrapy这样做。

请求不带合并cookie,示例如下:

request_with_cookie = Request(url='http://www.example.com', cookies={
   'currency': 'USD', 'country': 'UY'}, meta={
   'dont_merge_cookies': True})

更多信息请见CookiesMiddleware

  • encoding(string)- 该请求的编码(默认为’utf-8’)。这个编码将被用于URL的百分比编码,并且将正文转为str(如果给定的是unicode)。
  • priority(int)- 该请求的优先级(默认为0)。这个优先级被用于调度器,调度器根据这个优先级定义需要处理的请求的先后顺序。更高优先级值的请求将会越早执行。为了表示相对较低的优先级,允许这个值为负数。
  • dont_filter(boolean)- 指示该请求不应该被调度器所筛选。这通常用于当你希望多次执行同一个指定的请求,为了忽略重复筛选器。需要小心使用这个参数,否则你可能调用爬行循环。默认值为False。
  • errback(callable)- 回调函数,在处理请求的过程中如果有任何异常被抛出,则调用此函数。比如访问页面失败并返回404HTTP错误,等等。这个函数接受一个Twisted Failure实例作为第一个参数。有关更多信息,参见下面的使用errback来捕获请求处理过程中的异常
  • flags(list)- 发送给请求的flags,可以被用于记录日志或者类似目的。

url

一个包含了该请求的URL字符串。请记住,这个属性包含的是转义后的URL,因此它可能会与传递给构造函数中的URL不同。

这个属性是一个只读属性。若要改变请求的URL,请使用replace()。

method

在请求中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值