Scrapy-请求和响应

本文详细介绍了Scrapy框架中的Request和Response对象。Request对象用于表示HTTP请求,包括URL、回调函数、请求方法等参数,还有FormRequest和JsonRequest等子类。Response对象则表示HTTP响应,包含状态码、头部、正文等信息,以及TextResponse、HtmlResponse和XmlResponse等子类,用于处理不同类型的响应内容。
摘要由CSDN通过智能技术生成

Scrapy使用RequestResponse对象来爬行网站。通常,Request对象是在爬虫中生成的,并在整个系统中传递,直到它们到达下载器,后者执行请求并返回一个Response对象,该对象返回发出Request的爬虫。

RequestResponse类都有子类,这些子类添加了基类中不需要的功能。这些将在下面的Request子类和Response子类中进行描述

Request

scrapy.http.Request(*args, **kwargs)类,表示HTTP请求,该请求通常在爬虫中生成并由下载器执行,从而生成Responsescrapy.http.Request(*args, **kwargs)类接收以下参数:

  • url: 此请求的URL,str类型。如果该URL无效,则会引发ValueError异常|
  • callback: 将使用此请求的响应作为其第一个参数来调用的函数,collections.abc.Callable类型
  • method: 此请求的HTTP方法,str类型。默认为GET
  • meta: Request.meta熟悉的初始值, dict类型。如果给定,则将浅拷贝传入此dict
  • body: 请求主体。bytes或str类型
  • headers: 此请求的标头, dict类型。注意:如果需要为请求设置cookie,请使用cookies参数
  • cookies: 请求cookies, dict或list。
from scrapy.http import Request

# 使用DICT
request_with_cookies = Request(url='http://www.example.com',
                               cookies={
   'currency': 'USD', 'country': 'UY'})

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

List类型cookies允许自定义cookies的domainpath属性。这只在为以后得请求保存cookies时有用。

  • encondig: 此请求的编码,str类型。默认为utf-8
  • priority: 此请求的优先级,int类型,默认为0
  • dont_filter: 指示调度器不应筛选此请求,bool类型,默认为False。当您希望多次执行相同的请求时,可以使用此选项忽略重复的筛选器
  • errback: 如果在处理请求时引发任何异常,则将调用该函数,这包括出现404错误等错误的页面,collections.abc.Callable类型。
  • flags: 发送到请求的标志,可用于日志记录或类似用途, list类型
  • cb_kwargs: 具有任意数据的dict,将作为关键字参数传递到请求的回调,dict类型。

Request除了接收上面这些参数之外,它还具有以下属性和方法:

  • url: 此请求的URL的字符串。此属性是只读的,如果想要更改请求的URL,请使用Request.replace()方法
  • method: 表示请求中HTTP方法的字符串,而且是大写的,例如GET, POST等。
  • headers: 包含请求头的类似字典的对象
  • body: 以bytes表示的请求正文。此属性是只读的,要更改请求正文,请使用Request.replace()方法
  • meta: 包含此请求的任意元数据的dict。
  • cb_kwargs: 包含此请求的任意元数据的字典,它的内容将作为关键字参数传递给请求的回调
  • copy(): 返回一个新的请求,它是此请求的副本。
  • replace([url, method, headers, body, cookies, meta, flags, encoding, priority, dont_filter, callback, errback, cb_kwargs]): 返回一个具有相同成员的Request对象,但由指定的关键字参数赋予新值的成员除外。这个cb_kwargsmeta默认情况下,属性被浅复制
  • classmethod from_curl(curl_command, ignore_unknown_options=True, **kwargs): 从包含cURL命令的字符串创建Request对象。它填充HTTP方法、URL、报头、Cookie
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值