Python爬蟲實戰入門二:從一個簡單的HTTP請求開始
一、為什麼從HTTP請求開始
無論我們通過瀏覽器打開網站、訪問網頁,還是通過腳本對URL網址進行訪問,本質上都是對HTTP伺服器的請求,瀏覽器上所呈現的、控制台所顯示的都是HTTP伺服器對我們請求的響應。
以打開我的個人網站為例,我們在地址欄輸入「zmister.com」,瀏覽器上呈現的是下圖:我們按F12打開網頁調試工具,選擇「network」選項卡,可以看到我們對http://zmister.com的請求,以及http://zmister.com給我們的響應:
請求與響應二、基本的HTTP概念
通常HTTP消息包括客戶機向伺服器的請求消息和伺服器向客戶機的響應消息。這兩種類型的消息由一個起始行,一個或者多個頭域,一個指示頭域結束的空行和可選的消息體組成。
我們看上面對http://zmister.com的HTTP示例來說明:1、HTTP概覽
Request URl:表示請求的URL
Request Method:表示請求的方法,此處為GET。除此之外,HTTP的請求方法還有OPTION、HEAD、POST、DELETE、PUT等,而最常用的就是GET和POST方法:
- POST:向指定資源提交數據,請求伺服器進行處理(例如提交表單或者上傳文件)。數據被包含在請求本文中。這個請求可能會創建新的資源或修改現有資源,或二者皆有。
- GET:向指定的資源發出「顯示」請求。
Status Code:顯示HTTP請求和狀態碼,表示HTTP請求的狀態,此處為200,表示請求已被伺服器接收、理解和處理;
狀態代碼的第一個數字代表當前響應的類型,HTTP協議中有以下幾種響應類型:- 1xx消息——請求已被伺服器接收,繼續處理
- 2xx成功——請求已成功被伺服器接收、理解、並接受
- 3xx重定向——需要後續操作才能完成這一請求
- 4xx請求錯誤——請求含有詞法錯誤或者無法被執行
- 5xx伺服器錯誤——伺服器在處理某個正確請求時發生錯誤
2、HTTP請求頭
Accept:表示請求的資源類型;
Cookie:為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據;User-Agent:表示瀏覽器標識;Accept-Language:表示瀏覽器所支持的語言類型;Accept-Charset:告訴 Web 伺服器,瀏覽器可以接受哪些字元編碼;
Accept:表示瀏覽器支持的 MIME 類型;Accept-Encoding:表示瀏覽器有能力解碼的編碼類型;Connection:表示客戶端與服務連接類型;基本的HTTP介紹就結束了,如果需要更加詳細的HTTP知識,推薦一本HTTP入門書《圖解HTTP》
下面,我們用Python來實現一個簡單的HTTP請求三、用Python進行HTTP請求
這裡繼續用我的個人網站http://zmmister.com 作示例
打開代碼編輯器,輸入以下代碼:#coding:utf-8nimport requestsnnurl = "http://zmister.com"ndata = requests.get(url)n
這樣,就完成了一個簡單的對http://zmister.com的HTTP請求。
我們看看這個請求的狀態碼:data.status_coden
結果返回的是:200
再看看響應的主體消息:data.content結果返回了一大串編碼了的HTML源碼,這些HTML源碼未經解碼和解析,看上起很是凌亂對這些凌亂的html源碼進行處理,就需要使用到BeautifulSoup模塊了,下一章咱們繼續。
====================================================================
微信公眾號:州的先生 不定期更新爬蟲、網路數據採集、數據分析
推薦閱讀:
※Fab Academy 第十六周:界面和應用編程
※Haskell 這段代碼該如何理解?
※設計師學編程?從五個思維訓練開始
※getter 和 setter 方法有什麼意義?
※我們為什麼需要React?