scrapy 2.3 文本响应对象

2021-06-10 09:53 更新

下面是可用的内置响应子类的列表。您还可以对响应类进行子类化,以实现您自己的功能。

        文本响应对象

classscrapy.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

带有此响应编码的字符串。按顺序尝试以下机制来解决编码问题:

  1. 传入的编码 __init__ 方法 encoding 参数

  2. 在内容类型HTTP标头中声明的编码。如果此编码无效(即未知),则忽略它并尝试下一个解析机制。

  3. 响应正文中声明的编码。TextResponse类不为此提供任何特殊功能。然而, ​HtmlResponse​ 和 ​XmlResponse​ 上课。

  4. 通过查看响应主体推断出的编码。这是更脆弱的方法,也是最后一个尝试的方法。

selector

A ​Selector​ 使用响应作为目标的实例。选择器在第一次访问时被惰性地实例化。

TextResponse​ 对象除了支持标准之外还支持以下方法 ​Response​ 一:

xpath(query)

捷径 TextResponse.selector.xpath(query) ::

response.xpath('//p')
css(query)

捷径 TextResponse.selector.css(query) ::

response.css('p')
follow(urlcallback=Nonemethod='GET'headers=Nonebody=Nonecookies=Nonemeta=Noneencoding=Nonepriority=0dont_filter=Falseerrback=Nonecb_kwargs=Noneflags=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=Nonecallback=Nonemethod='GET'headers=Nonebody=Nonecookies=Nonemeta=Noneencoding=Nonepriority=0dont_filter=Falseerrback=Nonecb_kwargs=Noneflags=Nonecss=Nonexpath=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对象

classscrapy.http.HtmlResponse(url[, ...])

这个 ​HtmlResponse​ 类是的子类 ​TextResponse​ 它通过查看HTML添加了编码自动发现支持  meta http-equiv 属性。见 ​TextResponse.encoding​ .

XmlResponse对象

classscrapy.http.XmlResponse(url[, ...])

这个 ​XmlResponse​ 类是的子类 ​TextResponse​ 它通过查看XML声明行添加了编码自动发现支持。见 ​TextResponse.encoding​ .

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号