Python爬蟲實戰入門二:從一個簡單的HTTP請求開始

一、為什麼從HTTP請求開始

無論我們通過瀏覽器打開網站、訪問網頁,還是通過腳本對URL網址進行訪問,本質上都是對HTTP伺服器的請求,瀏覽器上所呈現的、控制台所顯示的都是HTTP伺服器對我們請求的響應。

以打開我的個人網站為例,我們在地址欄輸入「zmister.com」,瀏覽器上呈現的是下圖:

我們按F12打開網頁調試工具,選擇「network」選項卡,可以看到我們對zmister.com的請求,以及zmister.com給我們的響應:

請求與響應

響應消息主體

二、基本的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

這樣,就完成了一個簡單的對zmister.com的HTTP請求。

我們看看這個請求的狀態碼:

data.status_coden

結果返回的是:200

再看看響應的主體消息:

data.content

結果返回了一大串編碼了的HTML源碼,這些HTML源碼未經解碼和解析,看上起很是凌亂

對這些凌亂的html源碼進行處理,就需要使用到BeautifulSoup模塊了,下一章咱們繼續。

====================================================================

微信公眾號:州的先生 不定期更新爬蟲、網路數據採集、數據分析


推薦閱讀:

Fab Academy 第十六周:界面和應用編程
Haskell 這段代碼該如何理解?
設計師學編程?從五個思維訓練開始
getter 和 setter 方法有什麼意義?
我們為什麼需要React?

TAG:Python | 爬虫计算机网络 | 编程 |