
# 介绍
Response类用于http下载返回信息的类,它有几个子类:TextResponse 、 HtmlResponse 、 XmlResponse
其中 parse(self, response) 中的response就是HtmlResponse 类型的
# Response
```
class scrapy.http.Response(url[, status=200, headers=None, body=b'', flags=None, request=None])
```
参数说明:这些参数跟上一篇Scrapy详解之Request一样,可以参考,这里不再累赘讲述
属性和方法:
- url
str 返回的url
- status
int http返回的状态码 如: 200 404
- headers
dict 返回headers
若要获取特定的值用get('keyname') getlist('keyname')
get('keyname') : 获取指定key的第一个value值 返回str
getlist('keyname') : 获取指定key的所有value值 返回list
- body
byte 返回body,若需要返回unicode版本用 TextResponse.text
- request
返回Request对象,具体请参考上一篇Scrapy详解之Request,这里不再累赘讲述
- meta
返回meta,具体请参考上一篇Scrapy详解之Request,这里不再累赘讲述
- flags
返回请求标志,具体请参考上一篇Scrapy详解之Request,这里不再累赘讲述
- urljoin(url)
返回的url链接新的url,返回新的url
print('url:', response.url)
print('new url:', response.urljoin('Zarten'))
- 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的实例,跟Request.__init__的参数一样,唯一不同的是参数url可以是相对的
# TextResponse
这个类继承于Response类,增加了编码的功能,用于处理二进制数据,如图像、音视频等
```
class scrapy.http.TextResponse(url[, encoding[, ...]])
```
参数说明:
encoding: str 指定返回的编码方式,默认为None,如果是None,则encoding将自动在headers和body中查找编码方式
属性和方法:
- text
unicode编码返回body部分,等同于 response.body.decode(response.encoding)
- encoding
返回编码方式,返回方式按下面顺序:
1. 在class scrapy.http.TextResponse(url[, encoding[, ...]])中传递的encoding
2. 在返回的http header中查找
3. 在返回的body中查找
4. 从body中推断方式,最不可取的一种方式
- selector
选择器对象
一般用法:
```
response.selector.xpath(query)
response.selector.css(query)
```
也可用下面的2种简介方法
xpath(query)
用法:response.xpath('//p')
css(query)
用法:response.css('p')
- body_as_unicode()
等同于 text属性
- HtmlResponse
这个类是上面介绍类(TextResponse )的子类,这个类能自动发现编码方式通过HTML metahttp-equiv
通常在scrapy的spider中,回调函数parse的参数response就是这个类型
# XmlResponse
这个类也是TextResponse 的子类,能自动发现编码方式通过XML的声明
---
https://zhuanlan.zhihu.com/p/40332579