HTTP 和 HTTPS 都屬於網路 OSI 模型中的應用層,同時又是基於 TCP 之上
而 socket 是 TCP / IP 的 API
撰寫文章的同時我也在看 Python 知名 HTTP Library 的 Source code
它叫做 requests,我發現它的底層是 socket 實作的
有興趣研究底層的朋友可以自己以這些關鍵字搜尋
不過對於實務方面,其實寫爬蟲只需要了解應用層的 HTTP 協定就好
HTTP 是一種請求 / 回應式的網路協定,什麼意思呢 ?
簡單來說,今天你用瀏覽器打開巴哈姆特首頁,這個過程發生的事情如下 :
(1) 你打開了瀏覽器
(2) 輸入 https://www.gamer.com.tw/
(3) 瀏覽器向巴哈姆特伺服器主機發送請求 (requests)
(4) 巴哈姆特伺服器主機接收請求,並且給予回應 (response)
(5) 瀏覽器接收回應,呈現 HTML 和 CSS,並且以 JS 渲染畫面
以圖片呈現大概像是這樣 :
轉換成程式碼會像這樣 :
import requests
response = requests.get('https://www.gamer.com.tw/') |
前面提到 requests 是 Python 知名的 HTTP Library
它同時也是未來寫爬蟲會助你一臂之力的好用函式庫
因為 requests 可以完美的幫你處理掉 HTTP 請求
畢竟沒有 HTTP Library 的話,那真的就要去寫 socket 了 ...
寫 socket 去完成 HTTP Request 是可以,不過就以學習爬蟲來說,要先以高階框架為主