網絡爬蟲基礎
1.1 HTTP基本原理
1.1.1 URI和URL
URI即統一資源標志符,URL即統一資源定位符。
有這樣一個鏈接,http://test.com/test.txt
,在這個鏈接中,包含了訪問協議https,訪問目錄(即根目錄),資源名稱(test.txt)。通過這樣的鏈接,可以在互聯網上找到這個資源,這就是URI/URL。
URL是URI的子集,每個URL都是URI,但在URI中還包含另一個子類URN,即統一資源名稱,可以唯一標識這本書,但是沒有指定到哪里定位這本書。
在當今網絡中,很少使用URN,一般來說URI就是URL。
1.1.2 超文本
超文本就是網頁的HTML源代碼。
在瀏覽器中任意打開一個頁面,右擊選擇檢查,點擊Elements就可以看到網頁的源代碼,里面包含了各種標簽,網站正是解析了這些代碼才形成了網頁,這些代碼就是超文本。
1.1.3 HTTP和HTTPS
在URLhttp://test.com/test.txt
中,開頭通常都是http
或者https
這就是訪問資源需要的協議類型。
HTTP,中文名為超文本傳輸協議,用于從網絡傳輸超文本數據道本地瀏覽器,保證高效而準確的傳送超文本文檔。
HTTPS,中文名為超文本傳輸安全協議,是HTTP的安全版,即HTTP下加入SSL層,簡稱HTTPS。因此,它傳輸的內容都是經過SSL加密的,它的主要作用是:
- 建立一個信息安全通道來保證數據傳輸安全。
- 確認網站的真實性。使用HTTPS的網站,都可以通過點擊瀏覽器地址欄的鎖頭標志查看網站的真實信息。
1.1.4 HTTP請求過程
當我們在瀏覽器地址欄中輸入了一個URL,回車之后,瀏覽器進行加載,就可以看到頁面內容。
在這個過程中,就是我們的瀏覽器向網站服務器發送了一個請求,網站解析后,返回給瀏覽器一個回應,回應中包含了頁面的源代碼等,瀏覽器解析之后,就呈現出了網頁。
1.1.5 請求
請求,由客戶端向服務端發出,包括四部分內容:
- 請求方法
- 請求網站
- 請求頭
- 請求體
1.請求方法
常見的請求方法有兩種:GET和POST。
GET請求:在瀏覽器中輸入URL并回車,這就是一個GET請求,請求的參數直接包含在URL中。
POST請求:在表單提交時發生,例如在登陸時,填寫賬號密碼,點擊登陸,通常就會發起一個POST請求,請求的數據通常一表單的形式傳輸。
GET和POST有如下區別:
- GET請求的參數通常包含在URL中,數據可以在URL中看到;post請求的URL不包含數據,數據以表單形式傳輸,包含在請求體中。
- GET請求提交的數據最多只有1024字節;POST在數據量上沒有限制。
此外還有其他請求方法:
GET 請求頁面,并返回頁面內容。
HEAD 類似與GET請求,返回的相應中不含具體內容,用于獲取報頭。
POST 大多數用于提交表單或者上傳文件,數據包含在請求體中。
PUT 從客戶端向服務器傳送的數據取代指定文檔中的內容。
DELETE 請求服務器刪除指定頁面。
CONNECT 把服務器當跳板,讓服務器代替客戶端訪問其他網頁。
OPTIONS 允許客戶端查看服務器的性能。
TRACE 回顯服務器收到的請求,主要用于測試或者診斷。
2. 請求的網址
即是統一資源定位符URL。
3.請求頭
用來說明服務器要使用的附加信息。
Accept:請求報頭域,用于指定客戶端可接受哪些信息。
Accept-Language:指定客戶端可接受的語言類型。
Accept-Encoding:指定客戶端可接受的內容編碼。
Host:用于指定請求資源的主機IP和端口號,其內容為請求URL的原始服務器貨網關的位置。
Cookie:也常用Cookies。這是網站為辨別用戶而存儲在用戶本地的數據,主要功能為維持當前訪問對話,登陸之后,服務器對應信息就會存儲在Cookies中,每當瀏覽器向服務器發出請求時,就會在請求頭中加入Cookies,服務器以此辨識用戶身份,并且識別狀態為登陸狀態,返回登陸后的結果。
Referer:標識這個請求從哪個頁面發出。
User-Agent:一個特殊的字符串頭,使服務器識別用戶的操作系統及版本,瀏覽器及版本等信息。制作爬蟲時使用此信息偽裝成瀏覽器。
Content-Type:及互聯網媒體類型,在HTTP協議消息頭中用來表示具體請求中的媒體信息類型。