scrapy中的Request和Response對象

前言:

  如果框架中的組件比做成是人的各個器官的話,那個Request和Response就是血液,Item就是代謝產物

 

Request對象:

  是用來描述一個HTTP請求,其構造參數有

  1. url
    1. 請求的URL
  2. callback
    1. 回調函數
  3. method
    1. 默認是GET
  4. headers
    1. 字典類型
  5. body
  6. cookies
    1. 字典類型
  7. meta
    1. Request中的元數據字典,dict類型,用來給框架中的其它組件來進行傳遞消息,比如說中間件Iten、Pipeline。其它組件可以使用request對象的meta屬性來進行訪問該元數據字典中的參數
  8. encoding
  9. priority
    1. 請求的優先級默認是0,優先級高的就會優先進行下載
  10. dont_filter
    1. 默認是False, 對同一個url地址多次提交下載任務請求,後面請求會被去重過濾器直接過濾掉(避免重複下載資源)。如果將該參數爲True,可以讓請求避免被過濾。強制進行下載。
  11. errback
    1. 當請求出現異常的時候或者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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章