自上篇爬蟲文章寫完之後,好長時間都沒有再寫爬蟲相關的了,這次重新回顧了一下爬蟲的相關內容,一併記在這裏。
有的東西之前雖然已經寫過了,但是再廢話一遍。
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 | 服務器內部錯誤 |