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