Python網絡爬蟲(二)——http/https 協議

自上篇爬蟲文章寫完之後,好長時間都沒有再寫爬蟲相關的了,這次重新回顧了一下爬蟲的相關內容,一併記在這裏。

有的東西之前雖然已經寫過了,但是再廢話一遍。

http/https 協議

  • HTTP(Hypertext Transfer Protocol,超文本傳輸協議):是一種發佈和接受 HTML 網頁的方法,服務器端口號爲 80 端口
  • HTTPS(Hypertext Transfer Protocol over SecureSocket Layer,超文本傳輸安全協議):相比較於 HTTP 來說,HTTPS 多了一個 SSL,這個 SSL 就是 SecureSocket Layer 的意思,也就是說 HTTPS 是 HTTP 的加密版本。服務器端口號爲 443 端口

URL

URL(Uniform Resource Locator,統一資源定位符):簡單的說,就是我們平常在瀏覽器中輸入的網址,該網址能夠定位到該資源在網絡上的唯一地址。一般來說一個 URL 主要由以下幾部分組成:

scheme://host:port/path/?query-string=xxx#anchor

上邊的 URL 中,各個部分表示的內容爲:

  • scheme:表示訪問資源使用的協議,一般爲 ftp/http/https
  • host:表示主機名,域名
  • port:表示端口號
  • path:表示查找路徑
  • query-string:表示查詢字符串
  • anchor:表示錨點,在前端中用於頁面定位

以下邊的網站爲例:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=http&rsv_spt=1
  • scheme:https
  • host:www.baidu.com
  • path:/s
  • query-string:ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=http&rsv_spt=1

可以看出在上邊的 URL 中:

  • 沒有顯式的顯示端口號和錨點
  • 只存在一個 ?
  • 查詢字符串之間使用 & 分隔連接
  • URL 被輸入到瀏覽器中時,瀏覽器會對之進行編碼,URL 中如果存在非 ascii 字符,瀏覽器會將該字符編碼爲百分號+十六進制碼值

HTTP request

  • 在瀏覽器中輸入URL
  • 瀏覽器會向 HTTP 服務器發送 HTTP request,請求一般爲 get/post
  • 服務器將 response 文件返回瀏覽器
  • 瀏覽器分析 response 文件,如果其中引用到了其它文件,如 image,css,js,瀏覽器會再次 request 對應的 image,css,js
  • 當所有的文件都得到 response,瀏覽器會顯示 HTML(有時瀏覽器也不一定非要等到文件完全加載之後再顯示 HTML)

HTTP 請求方法

根據 HTTP 標準,HTTP 請求可以使用多種請求方法。

  • HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD方法
  • HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法

各項請求的作用爲:

請求方法 描述
GET 請求指定的頁面信息,並返回實體主體
HEAD 類似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改
PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容
DELETE 請求服務器刪除指定的頁面
CONNECT HTTP/1.1 協議中預留給能夠將連接改爲管道方式的代理服務器
OPTIONS 允許客戶端查看服務器的性能
TRACE 回顯服務器收到的請求,主要用於測試或診斷
PATCH 是對 PUT 方法的補充,用來對已知資源進行局部更新

但在爬蟲中,常用的 HTTP 請求方法主要爲 get/post。

Request Headers

在發送 HTTP 請求時,數據一般分爲三部分:

  • 把數據放在 URL
  • 把數據放在 body 中(在 post 請求中)
  • 把數據放在 header 中

而一些常見的請求頭參數爲:

  • User-Agent:瀏覽器名稱。該參數表明了瀏覽器的類型,而在爬取網頁時,如果不設置此參數,可能會被識別出來,因此通常情況下需要設置該參數,對爬蟲進行僞裝
  • Referer:表明當前的頁面是從哪個 URL 跳轉過來的,對於某些網站來說,如果不設置此參數,可能會拒絕響應
  • Cookie:表明網絡應用用來存儲的會話數據和其他信息,如登陸信息

常見的響應狀態碼

狀態碼 描述
200 請求正常,服務器正常返回數據
301 永久重定向
302 臨時重定向
400 請求的 URL 在服務器找不到,請求 URL 錯誤
403 服務器拒絕訪問,沒有權限
500 服務器內部錯誤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章