日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Scrapy的Request和Response詳解

 小豬窩969 2019-01-03

介紹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 一些特殊的keys

  • dont_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 code
  • handle_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地址的IP
  • dont_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_policy
  • max_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():對相對路徑進行自動補全

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多