介紹Scrapy框架的request對象和response對象 通常,Request對象在爬蟲程序中生成并傳遞到系統(tǒng),直到它們到達下載程序,后者執(zhí)行請求并返回一個Response對象,該對象返回到發(fā)出請求的爬蟲程序 Request類和Response類都有一些子類,子類用來添加基類中不必要的功能。這些在下面的請求子類和響應子類中描述
Request對象一個Request對象表示一個HTTP請求,它通常是在爬蟲中生成,并由下載器執(zhí)行,從而返回Response 基礎參數(shù) :url ——請求的url
callback ——請求回來的reseponse處理函數(shù),也叫回調(diào)函數(shù)
meta ——用來在“頁面”之間傳遞數(shù)據(jù)
- meta是一個dict,主要用來在解析函數(shù)之間傳遞值
- 比如:在
parse() 給item某些字段提取了值,并且提取出了一個新的URL,item另外一些字段需要在這個新的URL的response里面提取,為此定義一個parse_item() 解析函數(shù)用于處理這個response。在用request發(fā)送這個新的URL請求的時候,使用parse_item()作為回調(diào)函數(shù),并使用meta傳遞原來已經(jīng)提取的item字段給parse_item()里的response - Request對象接受一個meta參數(shù),一個字典對象,同時Response對象有一個meta屬性可以取到相應request傳過來的meta
- 一旦此參數(shù)被設置, 通過參數(shù)傳遞的字典將會被淺拷貝
headers ——頁面的headers數(shù)據(jù)
cookies ——設置頁面的cookies
基礎高級參數(shù)encoding ——請求的轉(zhuǎn)換編碼
priority ——鏈接優(yōu)先級
- 優(yōu)先級越高,越優(yōu)先爬取,但不可以序列化
序列化 (Serialization) :將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間,對象將其當前狀態(tài)寫入到臨時或持久性存儲區(qū)。以后,可以通過從存儲區(qū)中讀取或反序列化對象的狀態(tài),重新創(chuàng)建該對象
dont_filter ——強制不過濾 scrapy會對request的URL去重,加上dont_filter則告訴它這個URL不參與去重
errback ——錯誤回掉 errback更適合用于檢查記錄請求產(chǎn)生的錯誤,但是不適合請求的重試
Request對象方法copy() :復制一個一模一樣的對象
replace() :對對象參數(shù)進行替換
Request.meta 一些特殊的keysdont_redirect :如果 Request.meta 包含 dont_redirect 鍵,則該request將會被RedirectMiddleware忽略dont_retry :如果 Request.meta 包含 dont_retry 鍵, 該request將會被RetryMiddleware忽略handle_httpstatus_list :Request.meta 中的 handle_httpstatus_list 鍵可以用來指定每個request所允許的response codehandle_httpstatus_all :handle_httpstatus_all為True ,可以允許請求的任何響應代碼dont_merge_cookies :Request.meta 中的dont_merge_cookies設為TRUE,可以避免與現(xiàn)有cookie合并cookiejar :Scrapy通過使用 Request.meta中的cookiejar 來支持單spider追蹤多cookie session。 默認情況下其使用一個cookie jar(session),不過可以傳遞一個標示符來使用多個dont_cache :可以避免使用dont_cache元鍵等于True緩存每個策略的響應redirect_urls :通過該中間件的(被重定向的)request的url可以通過 Request.meta 的 redirect_urls 鍵找到bindaddress :用于執(zhí)行請求的傳出IP地址的IPdont_obey_robotstxt :如果Request.meta將dont_obey_robotstxt鍵設置為True,則即使啟用ROBOTSTXT_OBEY,RobotsTxtMiddleware也會忽略該請求download_timeout :下載器在超時之前等待的時間(以秒為單位)download_maxsize :爬取URL的最大長度download_latency :自請求已經(jīng)開始,即通過網(wǎng)絡發(fā)送的HTTP消息,用于獲取響應的時間量 該元密鑰僅在下載響應時才可用。雖然大多數(shù)其他元鍵用于控制Scrapy行為,但是這個應用程序應該是只讀的download_fail_on_dataloss :是否在故障響應失敗proxy :可以將代理每個請求設置為像http:// some_proxy_server:port這樣的值ftp_user :用于FTP連接的用戶名ftp_password :用于FTP連接的密碼referrer_policy :為每個請求設置referrer_policymax_retry_times :用于每個請求的重試次數(shù)。初始化時,max_retry_times元鍵比RETRY_TIMES設置更高優(yōu)先級
Response對象基礎參數(shù)url ——請求的url
body ——請求回來的html
meta ——用來在“頁面”之間傳遞數(shù)據(jù)
headers ——頁面的headers數(shù)據(jù)
cookies ——設置頁面的cookies
Request ——發(fā)出這個response的request對象
Response對象方法copy() :同request
replace() :同request
urljoin() :由于將頁面相對路徑改為絕對路徑
follow() :對相對路徑進行自動補全
|