前言:
如果框架中的組件比做成是人的各個器官的話,那個Request和Response就是血液,Item就是代謝產物
Request對象:
是用來描述一個HTTP請求,其構造參數有
- url
- 請求的URL
- callback
- 回調函數
- method
- 默認是GET
- headers
- 字典類型
- body
- cookies
- 字典類型
- meta
- Request中的元數據字典,dict類型,用來給框架中的其它組件來進行傳遞消息,比如說中間件Iten、Pipeline。其它組件可以使用request對象的meta屬性來進行訪問該元數據字典中的參數
- encoding
- priority
- 請求的優先級默認是0,優先級高的就會優先進行下載
- dont_filter
- 默認是False, 對同一個url地址多次提交下載任務請求,後面請求會被去重過濾器直接過濾掉(避免重複下載資源)。如果將該參數爲True,可以讓請求避免被過濾。強制進行下載。
- errback
- 當請求出現異常的時候或者HTTP錯誤的時候的回調函數
這裏面雖然有很多參數,但是除了url意外其它的都是可選參數,是帶有默認值的。在構造Request對象的時候,通常我們只需要傳遞一個url參數和callback參數,其它的都是可以直接使用默認值就可以了
Response對象:
是用來描述一個HTTP相應的,Response只是一個基類,根據相應的內容的不同有TextResponse、HTmlResponse、XmlResponse
當一個頁面完成下載的時候,下載器根據HTTP響應頭部中的Content-Type信息創建某個Response的子類的對象。我們通常爬取的網頁中的內容就是HTML文件,所有創建的也就是HtmlResponse,其中HtmlResponse和XmlResponse是TextResponse的子類。實際上,這三個子類只有細微的差別
HtmlResponse對象的屬性以及方法:
-
- url
- HTTP響應的url地址,str類型
- status
- HTTP響應的狀態碼,int類型
- headers
- HTTP響應的頭部,字典類型,可以通過get或者getlist方法對其進行訪問
- body
- text
- 文本形式的HTTP響應,str類型,是由response.body使用response.encoding解碼得到的
- encoding
- request
- 產生該HTTP響應的Request對象
- meta
-
- response.request.meta,在構造Request對象的時候,可以將要傳遞給回調函數的參數通過meta參數來進行傳遞;回調函數處理響應的時候,可以通過response.meta來進行取值
-
- selector
- 用於Response提取信息
- xpath
- css
- urljoin
- 用於構造絕對URL,當傳入的URL參數是一個相對地址的時候,根據response.url計算出相應的絕對URL
- url