本章節(jié)主要介紹一些常用的和爬蟲有關(guān)的知識。
從我們在瀏覽器地址欄輸入網(wǎng)址敲下了回車之后到一個鮮活的網(wǎng)頁呈現(xiàn)在我們面前這中間究竟發(fā)生了什么呢?

- DNS查詢
DNS(Domain Name System,域名系統(tǒng)),萬維網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過域名,最終得到該域名對應(yīng)的IP地址的過程叫做域名解析(或主機(jī)名解析)。DNS協(xié)議運(yùn)行在UDP協(xié)議之上,使用端口號53。在RFC文檔中RFC 2181對DNS有規(guī)范說明,RFC 2136對DNS的動態(tài)更新進(jìn)行說明,RFC 2308對DNS查詢的反向緩存進(jìn)行說明。
通俗來說,我們想去 www.baidu.com。但是計(jì)算機(jī)之間通信是采用的IP,所以我們必須知道www.baidu.com這個域名對應(yīng)的服務(wù)器IP,于是我們?nèi)ゲ橐幌翫NS,就可以知道百度的服務(wù)器IP是多少了。
- HTTP(S)協(xié)議
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。1960年美國人Ted Nelson構(gòu)思了一種通過計(jì)算機(jī)處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協(xié)議標(biāo)準(zhǔn)架構(gòu)的發(fā)展根基。Ted Nelson組織協(xié)調(diào)萬維網(wǎng)協(xié)會(World Wide Web Consortium)和互聯(lián)網(wǎng)工程工作小組(Internet Engineering Task Force )共同合作研究,最終發(fā)布了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。
每一個完整的http請求,都由一個request和一個response組成。
打開瀏覽器,按了F12進(jìn)入開發(fā)者模式,打開或者刷新網(wǎng)頁,切換到network(網(wǎng)絡(luò))就可以看到請求和響應(yīng)的信息了。
2.1 request
也就是我們常說的請求,這是由我們的客戶端(瀏覽器/爬蟲)發(fā)出的一個查詢請求。
request包括的內(nèi)容有:
請求頭:主要是:請求的鏈接(URL)、客戶端的Cookies、客戶端的名字(UserAgent)、請求的方法(Method)、請求的參數(shù)(表單)。
請求的body:通常包含了一些要發(fā)送給服務(wù)器的數(shù)據(jù),這些數(shù)據(jù)對用戶是不可見的,不會顯示在瀏覽器的地址欄里面。

2.2. response
也就是服務(wù)器返回的響應(yīng)。
響應(yīng)也包括了響應(yīng)頭、響應(yīng)的body。
在響應(yīng)頭里面通常有操作客戶端Cookies的命令,增加cookie或者刪除cookie,如果是跳轉(zhuǎn),那么會有一個跳轉(zhuǎn)的目標(biāo)網(wǎng)址,瀏覽器發(fā)現(xiàn)了,就會自動跳轉(zhuǎn)到新的網(wǎng)址去。
響應(yīng)的body,那就是響應(yīng)的內(nèi)容了,比如說網(wǎng)頁內(nèi)容,js代碼,css代碼,文件等等。

2.3 綜合知識
一個請求對應(yīng)一個響應(yīng)。構(gòu)成了一個完整的HTTP請求。
在HTTP headers圖里,我們可以看到有個General,里面有個StatusCode,這叫狀態(tài)碼。是人為規(guī)定一個用來判斷請求狀態(tài)的數(shù)字,常見的就是200,302,403,404.更多狀態(tài)碼詳見HTTP狀態(tài)碼詳解.
常見HTTP狀態(tài)碼的含義:
??200--請求成功
??302--請求跳轉(zhuǎn)
??403--拒絕訪問
??404--找不到資源。
那么HTTP和HTPPS協(xié)議有什么區(qū)別呢?HTTPS,簡單概括就是升級版的HTTP協(xié)議,他最重要的功能,就是在HTTP基礎(chǔ)上提高了安全性,基本上可以保證信息不會被第三方篡改?,F(xiàn)在網(wǎng)站也基本上都在部署和使用HTTPS了。他的基本操作還是和http協(xié)議一樣的,只不過是傳輸?shù)臄?shù)據(jù)經(jīng)過了加密傳輸。
爬蟲如果要獲取到一個網(wǎng)頁,那么就一定要發(fā)送一個HTTP請求,就必須經(jīng)過這些過程。覺得麻煩嗎?我也覺得。幸好已經(jīng)有很多很優(yōu)美的庫,幫我們做好了大部分的工作,我們只需要專心我們的邏輯操作就OK了。
所以,感謝前輩大佬們。
下一節(jié),我們要了解的是 HTML、CSS、JS 的相關(guān)知識。
?
傳送門:
下一章
爬蟲入門教程④— 必備知識基礎(chǔ)(三)網(wǎng)頁的構(gòu)成
所有的章節(jié):