scrapy 2.3 文本響應(yīng)對象

2021-06-10 09:53 更新

下面是可用的內(nèi)置響應(yīng)子類的列表。您還可以對響應(yīng)類進(jìn)行子類化,以實(shí)現(xiàn)您自己的功能。

        文本響應(yīng)對象

classscrapy.http.TextResponse(url[, encoding[, ...]])

?TextResponse? 對象將編碼功能添加到基 ?Response? 類,它只用于二進(jìn)制數(shù)據(jù),如圖像、聲音或任何媒體文件。

?TextResponse? 對象支持新的 __init__ 方法參數(shù),以及基 ?Response? 物體。其余功能與 ?Response? 類,此處未記錄。

參數(shù)

encoding (str) -- 包含用于此響應(yīng)的編碼的字符串。如果創(chuàng)建一個 ?TextResponse? 對象,它將轉(zhuǎn)換為使用此編碼編碼的字節(jié)。如果 編碼 是 None (默認(rèn)),將在響應(yīng)頭和正文中查找編碼。

?TextResponse? 除了標(biāo)準(zhǔn)之外,對象還支持以下屬性 ?Response? 一:

text

響應(yīng)體,作為字符串。

一樣 response.body.decode(response.encoding) ,但結(jié)果在第一次調(diào)用后緩存,因此您可以訪問 response.text 多次無額外開銷。

注解

str(response.body) 不是將響應(yīng)正文轉(zhuǎn)換為字符串的正確方法:

>>> str(b'body')
"b'body'"
encoding

帶有此響應(yīng)編碼的字符串。按順序嘗試以下機(jī)制來解決編碼問題:

  1. 傳入的編碼 __init__ 方法 encoding 參數(shù)

  2. 在內(nèi)容類型HTTP標(biāo)頭中聲明的編碼。如果此編碼無效(即未知),則忽略它并嘗試下一個解析機(jī)制。

  3. 響應(yīng)正文中聲明的編碼。TextResponse類不為此提供任何特殊功能。然而, ?HtmlResponse? 和 ?XmlResponse? 上課。

  4. 通過查看響應(yīng)主體推斷出的編碼。這是更脆弱的方法,也是最后一個嘗試的方法。

selector

A ?Selector? 使用響應(yīng)作為目標(biāo)的實(shí)例。選擇器在第一次訪問時被惰性地實(shí)例化。

?TextResponse? 對象除了支持標(biāo)準(zhǔn)之外還支持以下方法 ?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? 要跟蹤鏈接的實(shí)例 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]

見 創(chuàng)建請求的快捷方式 用于示例。

follow_all(urls=Nonecallback=Nonemethod='GET'headers=Nonebody=Nonecookies=Nonemeta=Noneencoding=Nonepriority=0dont_filter=Falseerrback=Nonecb_kwargs=Noneflags=Nonecss=Nonexpath=None)

產(chǎn)生 ?Request? 跟蹤所有鏈接的實(shí)例 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 參數(shù)可用于在中執(zhí)行鏈接提取 follow_all 方法(只有一個 urls , css 和 xpath 接受)。

注意,當(dāng)經(jīng)過 SelectorList 作為 urls 參數(shù)或使用 css 或 xpath 參數(shù)時,此方法不會為無法從中獲取鏈接的選擇器生成請求(例如,沒有 href 屬性)

json()

2.2 新版功能.

將JSON文檔反序列化為Python對象。

從反序列化的JSON文檔返回Python對象。結(jié)果在第一次調(diào)用后被緩存。

HTMLResponse對象

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

這個 ?HtmlResponse? 類是的子類 ?TextResponse? 它通過查看HTML添加了編碼自動發(fā)現(xiàn)支持  meta http-equiv 屬性。見 ?TextResponse.encoding? .

XmlResponse對象

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

這個 ?XmlResponse? 類是的子類 ?TextResponse? 它通過查看XML聲明行添加了編碼自動發(fā)現(xiàn)支持。見 ?TextResponse.encoding? .

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號