scrapy 2.3 文本响应对象
下面是可用的内置响应子类的列表。您还可以对响应类进行子类化,以实现您自己的功能。
文本响应对象
scrapy.http.TextResponse(url[, encoding[, ...]])TextResponse 对象将编码功能添加到基 Response 类,它只用于二进制数据,如图像、声音或任何媒体文件。
TextResponse 对象支持新的 __init__ 方法参数,以及基 Response 物体。其余功能与 Response 类,此处未记录。
- 参数
-
encoding (str) -- 包含用于此响应的编码的字符串。如果创建一个
TextResponse 对象,它将转换为使用此编码编码的字节。如果 编码 是None(默认),将在响应头和正文中查找编码。
TextResponse 除了标准之外,对象还支持以下属性 Response 一:
text-
响应体,作为字符串。
一样
response.body.decode(response.encoding),但结果在第一次调用后缓存,因此您可以访问response.text多次无额外开销。注解
str(response.body)不是将响应正文转换为字符串的正确方法:>>> str(b'body') "b'body'"
encoding-
带有此响应编码的字符串。按顺序尝试以下机制来解决编码问题:
-
传入的编码
__init__方法encoding参数 -
在内容类型HTTP标头中声明的编码。如果此编码无效(即未知),则忽略它并尝试下一个解析机制。
-
响应正文中声明的编码。TextResponse类不为此提供任何特殊功能。然而,
HtmlResponse 和 XmlResponse 上课。 -
通过查看响应主体推断出的编码。这是更脆弱的方法,也是最后一个尝试的方法。
-
selector-
A
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, cb_kwargs=None, flags=None)-
返回A
Request 要跟踪链接的实例url. 它接受与Request.__init__方法,但url不仅可以是绝对URL,而且可以是-
相对URL
-
一
Link 对象,例如 链接提取器 -
一
Selector 对象<link>或<a>元素,例如response.css('a.my_link')[0] -
属性
Selector (不是选择器列表),例如。response.css('a::attr(href)')[0]或response.xpath('//img/@src')[0]
见 创建请求的快捷方式 用于示例。
-
follow_all(urls=None, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding=None, priority=0, dont_filter=False, errback=None, cb_kwargs=None, flags=None, css=None, xpath=None)-
产生
Request 跟踪所有链接的实例urls. 它接受与 Request 的__init__方法,除了urls元素不需要是绝对URL,它可以是以下任何一个:-
相对URL
-
一
Link 对象,例如 链接提取器 -
一
Selector 对象<link>或<a>元素,例如response.css('a.my_link')[0] -
属性
Selector (不是选择器列表),例如。response.css('a::attr(href)')[0]或response.xpath('//img/@src')[0]
此外,
css和xpath参数可用于在中执行链接提取follow_all方法(只有一个urls,css和xpath接受)。注意,当经过
SelectorList作为urls参数或使用css或xpath参数时,此方法不会为无法从中获取链接的选择器生成请求(例如,没有href属性) -
json()-
2.2 新版功能.
将JSON文档反序列化为Python对象。
从反序列化的JSON文档返回Python对象。结果在第一次调用后被缓存。
-
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 .
- class