標籤:學習 位置 get請求 fir 引擎 渲染 tle 代理服務 tail
1 關於URL
URL(Uniform / Universal Resource Locator):統一資源定位器,用於完整地描述Internet上網頁和其他資源的地址的一種標識方法
URL是爬蟲的入口,——非常重要
基本格式:
scheme://host[:port# ]/path/.../[?query-string][#anchor]
scheme:協議(例如:http、https、ftp)
host:伺服器的IP地址或網域名稱
port#:伺服器連接埠(協議預設連接埠80,可預設)
path:訪問資源的路徑
query-string:發送給http伺服器的資料
anchor:錨(轉跳到網頁的指定錨點位置)
樣本:
http://www.baidu.com
http://item.jd.com/11963485.html#product-detail
ftp://192.168.1.118:8081/index
2 HTTP協議、HTTPS協議2.1 HTTP協議
HTTP協議(HyperText Transfer Protocol,超文字傳輸通訊協定 (HTTP)):是一種發布和接收HTML頁面的方法。HTTP協議是一個應用程式層的協議,無串連(每次串連只處理一個請求),無狀態(每次串連,傳輸都是獨立的)
2.2 HTTPS協議
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)協議簡單講是HTTP的安全版,在HTTP下加入SSL層。HTTPS = HTTP+SSL(Secure Sockets Layer 安全套接層)主要用於Web的安全傳輸協議,在傳輸層對網路連接進行加密,保障在Internet上資料轉送的安全
註:
HTTP的連接埠號碼為80;HTTPS的連接埠號碼為443;
3 HTTP Request請求
HTTP請求常用的兩種方法:
(1)Get:“擷取”,是為了從伺服器上擷取資訊,傳輸給伺服器的資料的過程不夠安全,資料大小有限制;
(2)Post:“發送”,向伺服器傳遞資料,傳輸資料的過程是安全的,大小理論上沒有限制;
HTTP其他要求方法:
4 User-Agent 使用者代理程式
http header的User-Agent(簡稱UA)譯為使用者代理程式,是頭域的組成部分,是一個特殊字元串頭,是一種向訪問網站提供你所使用的瀏覽器類型及版本、作業系統及版本、瀏覽器核心、等資訊的標識。通過這個標識,使用者所訪問的網站可以顯示不同的排版從而為使用者提供更好的體驗或者進行資訊統計;例如用手機訪問Google和電腦訪問是不一樣的,這些是Google根據訪問者的UA來判斷的。
UA可以進行偽裝。也即可以用於偽裝爬蟲程式
瀏覽器的UA字串的標準格式:瀏覽器標識(作業系統標識;加密等級標識;瀏覽器語言)渲染引擎標識版本資訊。但各個瀏覽器有所不同。
備忘:出於相容及推廣等目的,很多瀏覽器的標識相同,因此瀏覽器標識並不能說明瀏覽器的真實版本,真實版本資訊在UA字串尾部可以找到。
User-Agent:Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/59.0
可以通過軟體 Fiddler 、wireshark等實現網路抓包
關於抓包工具的詳細闡述網路抓包wireshark
5 HTTP Response響應的狀態代碼2、狀態代碼
根據響應結果的類型,大致分為以下幾類:
2.1 1XX(資訊類)
該類型狀態代碼表示接收到請求並且繼續處理。
- 100,用戶端必須繼續發出請求。
- 101,用戶端要求伺服器根據請求轉換HTTP協議版本。
2.2 2XX(響應成功)
該類型狀態代碼表示動作被成功接收、理解和接受。
- 200,表明該請求被成功地完成,所請求的資源發送到用戶端。
- 201,提示知道新檔案的URL。
- 202,接受並處理,但處理未完成。
- 203,返回資訊不確定或不完整。
- 204,收到請求,但返回資訊為空白。
- 205,伺服器完成了請求,使用者必須複位當前已經瀏覽過的檔案。
- 206,伺服器已經完成了部分使用者的GET請求。
2.3 3XX(重新導向類)
該類型狀態代碼表示為了完成指定的動作,必須接受進一步處理。
- 300,請求的資源可在多處獲得。
- 301,本網頁被永久性轉移到另一個URL。
- 302,請求的網頁被重新導向到新的地址。
- 303,建議使用者訪問其他URL或訪問方式。
- 304,自從上次請求後,請求的網頁未修改過。
- 305,請求的資源必須從伺服器指定的地址獲得。
- 306,前一版本HTTP中使用的代碼,現已不再使用。
- 307,聲明請求的資源臨時性刪除。
2.4 4XX(用戶端錯誤類)
該類型狀態代碼表示請求包含錯誤文法或不能正確執行。
- 400,用戶端請求有語法錯誤。
- 401,請求未經授權。
- 402,保留有效ChargeTo頭響應。
- 403,禁止訪問,伺服器收到請求,但拒絕提供服務。
- 404,可串連伺服器,但伺服器無法取得所請求的網頁,請求資源不存在。
- 405,使用者在Request-Line欄位定義的方法不被允許。
- 406,根據使用者發送的Accept,請求資源不可訪問。
- 407,類似401,使用者必須首先在Proxy 伺服器上取得授權。
- 408,用戶端沒有在使用者指定的時間內完成請求。
- 409,對當前資源狀態,請求不能完成。
- 410,伺服器上不再有此資源。
- 411,伺服器拒絕使用者定義的Content-Length屬性請求。
- 412,一個或多個要求標頭欄位在當前請求中錯誤。
- 413,請求的資源大於伺服器允許的大小。
- 414,請求的資源URL長於伺服器允許的長度。
- 415,請求資源不支援要求項目格式。
- 416,請求中包含Range要求標頭欄位,在當前請求資源範圍內沒有range指示值。
- 417,伺服器不滿足請求Expect頭欄位指定的期望值。
2.5 5XX(伺服器錯誤類)
該類型狀態代碼表示伺服器或網關錯誤。
- 500,伺服器錯誤。
- 501,伺服器不支援要求的功能。
- 502,網關錯誤。
- 503,無法獲得服務。
- 504,網關逾時。
- 505,不支援的http版本。
3、回應標頭
是對響應的一種限定,包含很多屬性。常用的屬性有:
- Location,實現請求重新導向。
- Server,伺服器的基本資料。
- Content-Encoding,伺服器發送資料時使用的壓縮格式。
- Content-Language,發送的資料所用的語言。
- Content-Type,所發送的資料的類型。
- Content-Length,發送資料的大小。
- Set-Cookie,把cookie發送到用戶端。
- Last-Modified,指示資源的最後修改日期和時間。
Python學習筆記——與爬蟲相關的網路知識