HTTP基本原理 在本節(jié)我們會詳細了解 HTTP 的基本原理,了解在瀏覽器中敲入一個 URL 到獲取網(wǎng)頁內容發(fā)生了一個怎樣的過程,了解了這些內容,有助于去進一步了解爬蟲的基本原理。小編推薦大家加一下這個群:330637182 這個群里好幾千人了!大家遇到啥問題都會在里面交流!而且免費分享零基礎入門料資料web開發(fā) 爬蟲資料一整套!是個非常好的學習交流地方!也有程序員大神給大家熱心解答各種問題!很快滿員了。欲進從速哦!各種PDF等你來下載!全部都是免費的哦!所以小編在群里等你們過來一起交流學習呢! 關于爬蟲的HTTP原理,看完這一長篇就夠了?。ǜ饺笈老x案例)Python程序員 2 個月前 HTTP基本原理 在本節(jié)我們會詳細了解 HTTP 的基本原理,了解在瀏覽器中敲入一個 URL 到獲取網(wǎng)頁內容發(fā)生了一個怎樣的過程,了解了這些內容,有助于去進一步了解爬蟲的基本原理。 1. URI、URL 在了解 HTTP 之前我們先了解一下 URI 和 URL。我們經(jīng)常會聽到 URI 和 URL 兩個術語,URI 全稱為 Uniform Resource Identifier,即統(tǒng)一資源標志符,URL 全稱為 Universal Resource Locator,即統(tǒng)一資源定位符。 舉例來說,https://github.com/favicon.ico,這是 GitHub 的網(wǎng)站圖標鏈接,它是一個 URL,也是一個 URI,即有這樣的一個圖標資源,我們用 URL/URI 來唯一指定了它的訪問方式,這其中包括了訪問協(xié)議 https、訪問路徑/即根目錄,資源名稱 favicon.ico,通過這樣的一個鏈接我們便可以從互聯(lián)網(wǎng)上找到這個資源,這就是 URL/URI。 URL 是 URI 的子集,也就是說每個 URL 都是 URI,但不是每個 URI 都是 URL。那么怎樣的 URI 不是 URL 呢?URI 還包括一個子類叫做 URN,它的全稱為 Universal Resource Name,即統(tǒng)一資源名稱。URN 只命名資源而不指定如何定位資源,如 urn:isbn:0451450523,它指定了一本書的 ISBN,可以唯一標識這一本書,但是沒有指定到哪里定位這本書,這就是 URN,URL、URN、URI 的關系可以用圖表示如下: URL、URN、URI 關系圖 但是在目前的互聯(lián)網(wǎng),URN 的使用非常少,所以幾乎所有的 URI 都是 URL,所以一般的網(wǎng)頁鏈接我們可以稱之為 URL,也可以稱之為 URI,我個人習慣稱之為 URL。
現(xiàn)在越來越多的網(wǎng)站和 APP 都已經(jīng)向 HTTPS 方向發(fā)展。例如:
12306 頁面 這是因為 12306 的 CA 證書是中國鐵道部自己頒發(fā)給自己的,而這個證書是不被官方機構認可的,所以這里證書驗證就不會通過而提示這樣的話,但是實際上它的數(shù)據(jù)傳輸依然是經(jīng)過 SSL 加密的。我們如果要爬取這樣的站點就需要設置忽略證書的選項,否則會提示 SSL 鏈接錯誤,在后文會進行詳細說明。 網(wǎng)絡請求記錄 這一個條目的各列分別代表:
方法描述 GET請求指定的頁面信息,并返回實體主體。 HEAD類似于 GET 請求,只不過返回的響應中沒有具體的內容,用于獲取報頭。 POST向指定資源提交數(shù)據(jù)進行處理請求,數(shù)據(jù)被包含在請求體中。 PUT從客戶端向服務器傳送的數(shù)據(jù)取代指定的文檔的內容。 DELETE請求服務器刪除指定的頁面。 CONNECTHTTP/1.1 協(xié)議中預留給能夠將連接改為管道方式的代理服務器。 OPTIONS允許客戶端查看服務器的性能。 TRACE回顯服務器收到的請求,主要用于測試或診斷。 詳細信息 在登錄之前我們填寫了用戶名和密碼信息,提交時就這些內容就會以 Form Data 的形式提交給服務器,此時注意 Request Headers 中指定了 Content-Type 為 application/x-www-form-urlencoded,只有設置 Content-Type 為 application/x-www-form-urlencoded 才會以 Form Data 形式提交,另外我們也可以將 Content-Type 設置為 application/json 來提交 Json 數(shù)據(jù),或者設置為 multipart/form-data 來上傳文件。 下面列出了 Content-Type 和 POST 提交數(shù)據(jù)方式的關系: Content-Type提交數(shù)據(jù)方式 application/x-www-form-urlencodedForm 表單提交 multipart/form-data表單文件上傳提交 application/json序列化 Json 數(shù)據(jù)提交 text/xmlXML 數(shù)據(jù)提交 在爬蟲中如果我們要構造 POST 請求需要注意這幾種 Content-Type,了解各種請求庫的各個參數(shù)設置時使用的是哪種 Content-Type,不然可能會導致 POST 提交后得不到正常的 Response。 以上便是對 Request 各部分內容的解釋。 狀態(tài)碼說明詳情 100繼續(xù)請求者應當繼續(xù)提出請求。服務器已收到請求的一部分,正在等待其余部分。 101切換協(xié)議請求者已要求服務器切換協(xié)議,服務器已確認并準備切換。 200成功服務器已成功處理了請求。 201已創(chuàng)建請求成功并且服務器創(chuàng)建了新的資源。 202已接受服務器已接受請求,但尚未處理。 203非授權信息服務器已成功處理了請求,但返回的信息可能來自另一來源。 204無內容服務器成功處理了請求,但沒有返回任何內容。 205重置內容服務器成功處理了請求,內容被重置。 206部分內容服務器成功處理了部分請求。 300多種選擇針對請求,服務器可執(zhí)行多種操作。 301永久移動請求的網(wǎng)頁已永久移動到新位置,即永久重定向。 302臨時移動請求的網(wǎng)頁暫時跳轉到其他頁面,即暫時重定向。 303查看其他位置如果原來的請求是 POST,重定向目標文檔應該通過 GET 提取。 304未修改此次請求返回的網(wǎng)頁未修改,繼續(xù)使用上次的資源。 305使用代理請求者應該使用代理訪問該網(wǎng)頁。 307臨時重定向請求的資源臨時從其他位置響應。 400錯誤請求服務器無法解析該請求。 401未授權請求沒有進行身份驗證或驗證未通過。 403禁止訪問服務器拒絕此請求。 404未找到服務器找不到請求的網(wǎng)頁。 405方法禁用服務器禁用了請求中指定的方法。 406不接受無法使用請求的內容響應請求的網(wǎng)頁。 407需要代理授權請求者需要使用代理授權。 408請求超時服務器請求超時。 409沖突服務器在完成請求時發(fā)生沖突。 410已刪除請求的資源已永久刪除。 411需要有效長度服務器不接受不含有效內容長度標頭字段的請求。 412未滿足前提條件服務器未滿足請求者在請求中設置的其中一個前提條件。 413請求實體過大請求實體過大,超出服務器的處理能力。 414請求 URI 過長請求網(wǎng)址過長,服務器無法處理。 415不支持類型請求的格式不受請求頁面的支持。 416請求范圍不符頁面無法提供請求的范圍。 417未滿足期望值服務器未滿足期望請求標頭字段的要求。 500服務器內部錯誤服務器遇到錯誤,無法完成請求。 501未實現(xiàn)服務器不具備完成請求的功能。 502錯誤網(wǎng)關服務器作為網(wǎng)關或代理,從上游服務器收到無效響應。 503服務不可用服務器目前無法使用。 504網(wǎng)關超時服務器作為網(wǎng)關或代理,但是沒有及時從上游服務器收到請求。 505HTTP 版本不支持服務器不支持請求中所用的 HTTP 協(xié)議版本。 |
|