爬虫蜘蛛采集请求和回应Request和Response之响应对象scrapy.Response(34)python SCRAPY最新教程1.51以上版本
响应对象
- class
scrapy.http.
Response
(url [,status = 200,headers = None,body = b”,flags = None,request = None ]) - 甲
Response
对象表示的HTTP响应,这通常是下载(由下载器)并馈送到蜘蛛进行处理。参数: - url(string) – 此响应的URL
- status(int) – 响应的HTTP状态。默认为
200
。 - headers(dict) – 此响应的标头。dict值可以是字符串(对于单值标头)或列表(对于多值标头)。
- body(bytes) – 响应主体。要将解码后的文本作为str(Python 2中的unicode)访问,您可以使用
response.text
来自编码感知的 Response子类,例如TextResponse
。 - flags(list) – 是包含
Response.flags
属性初始值的列表 。如果给定,列表将被浅层复制。 - request(
Request
object) –Response.request
属性的初始值。这表示Request
生成此响应的内容。
url
- 包含响应URL的字符串。
该属性是只读的。更改响应使用的URL
replace()
。
headers
- 类似字典的对象,包含响应头。可以使用
get()
返回具有指定名称的第一个标头值来访问值,或者getlist()
返回具有指定名称的所有标头值。例如,此调用将为您提供标题中的所有Cookie:response.headers.getlist('Set-Cookie')
body
- 这个回复的正文。请记住,Response.body始终是一个字节对象。如果您想使用unicode版本
TextResponse.text
(仅在TextResponse
和子类中可用)。该属性是只读的。更改响应使用的正文
replace()
。
request
Request
生成此响应的对象。在响应和请求通过所有Downloader Middleware之后,此属性在Scrapy引擎中分配。特别是,这意味着:
meta
- 对象
Request.meta
属性的 快捷方式Response.request
(即self.request.meta
)。与
Response.request
属性不同,属性Response.meta
沿着重定向和重试传播,因此您将获得Request.meta
从蜘蛛发送的原始属性。也可以看看
Request.meta
属性
flags
- 包含此响应标志的列表。标志是用于标记响应的标签。例如:‘cached’,‘redirected ‘等。它们显示在响应(__str__ 方法)的字符串表示中,引擎用于记录。
copy
()- 返回一个新的Response,它是此Response的副本。
replace
([url,status,headers,body,request,flags,cls ])- 返回具有相同成员的Response对象,但通过指定的任何关键字参数给定新值的成员除外。
Response.meta
默认情况下复制该属性。
urljoin
(url )- 通过将Response
url
与可能的相对URL 组合来构造绝对URL。这是urlparse.urljoin的包装器,它只是进行此调用的别名:
urlparse.urljoin(response.url, url)
follow
(url,callback = None,method =’GET’,headers = None,body = None,cookies = None,meta = None,encoding =’utf-8′,priority = 0,dont_filter = False,errback = None )- 返回一个
Request
实例以关注链接url
。它接受与Request.__init__
方法相同的参数,但url
可以是相对URL或scrapy.link.Link
对象,而不仅是绝对URL。TextResponse
follow()
除了绝对/相对URL和链接对象之外,还提供了一种支持选择器的方法。
响应子类
以下是可用的内置Response子类列表。您还可以将Response类子类化以实现您自己的功能。
TextResponse对象
- class
scrapy.http.
TextResponse
(url [,encoding [,… ]]) TextResponse
对象将编码功能添加到基Response
类,该基 类仅用于二进制数据,例如图像,声音或任何媒体文件。TextResponse
除了基础Response
对象之外,对象还支持新的构造函数参数。其余功能与Response
课程相同,此处未记录。参数: encoding(string) – 是一个字符串,其中包含用于此响应的编码。如果 TextResponse
使用unicode主体创建对象,则将使用此编码对其进行编码(请记住body属性始终为字符串)。如果encoding
是None
(默认值),则将在响应标头和正文中查找编码。TextResponse
除了标准属性之外,对象还支持以下属性Response
:text
- 响应体,作为unicode。
与之相同
response.body.decode(response.encoding)
,但结果在第一次调用后缓存,因此您可以response.text
多次访问 而无需额外开销。注意
unicode(response.body)
不是将响应体转换为unicode的正确方法:您将使用系统默认编码(通常为ascii)而不是响应编码。
encoding
- 带有此响应编码的字符串。通过尝试以下机制解决编码,按顺序:
- 在构造函数编码参数中传递的编码
- 在Content-Type HTTP标头中声明的编码。如果此编码无效(即未知),则忽略该编码并尝试下一个解析机制。
- 响应正文中声明的编码。TextResponse类不为此提供任何特殊功能。但是,
HtmlResponse
和XmlResponse
类一样。 - 通过查看响应体来推断编码。这是一个更脆弱的方法,但最后一个尝试。
selector
- 甲
Selector
使用响应作为目标实例。选择器在第一次访问时被懒惰地实例化。
TextResponse
除了标准方法之外,对象还支持以下方法Response
:xpath
(query)- 快捷方式
TextResponse.selector.xpath(query)
:response.xpath('//p')
css
(query)- 快捷方式
TextResponse.selector.css(query)
:response.css('p')
follow
(url,callback = None,method =’GET’,headers = None,body = None,cookies = None,meta = None,encoding = None,priority = 0,dont_filter = False,errback = None )- 返回一个
Request
实例以关注链接url
。它接受与Request.__init__
方法相同的参数,但url
不仅可以是绝对URL,还可以- 相对URL;
- scrapy.link.Link对象(例如链接提取器结果);
- 属性选择器(不是SelectorList) – 例如
response.css('a::attr(href)')[0]
或response.xpath('//img/@src')[0]
。 - 选择器
<a>
或<link>
元素,例如response.css('a.my_link')[0]
。
请参阅创建用法示例请求的快捷方式。
HtmlResponse对象
- class
scrapy.http.
HtmlResponse
(url [,… ]) - 该
HtmlResponse
班是的子类TextResponse
,其增加了通过查看HTML编码自动发现支持META HTTP-EQUIV属性。见TextResponse.encoding
。
XmlResponse对象
- class
scrapy.http.
XmlResponse
(url [,… ]) - 该
XmlResponse
班是的子类TextResponse
,其增加了通过查看XML声明行编码自动发现支持。见TextResponse.encoding
。
评论被关闭。