Python爬蟲學習一------HTTP的基本原理

來源:互聯網
上載者:User

標籤:nsf   找不到   orb   本地   ica   cat   secure   IV   dns服務   

昨天剛買的崔大大的《Python3網路爬蟲開發實戰》,今天就到了,開心的讀完了爬蟲基礎這一章,現記錄下自己的淺薄理解,如有見解不到位之處,望指出。

1.HTTP的基本原理

  ①我們經常會在瀏覽器輸入www.baidu.com這一網址,這一網址到底是什麼呢?其實這就是URL,即(Universal Resource Locator)統一資源定位器。URL明確了百度返回給我們的頁面所在的位置。其實URL是另一種叫做URI的子集,URI(Universal Resource Identifier)翻譯為統一資源標誌符,它指明了有這樣一個資源。

  ②什麼是超文本?我們知道HTTP的名稱為超文字傳輸通訊協定 (HTTP),到底什麼是超文本呢?其實超文本簡單來說就是網頁的原始碼HTML,用一系欄標籤構成的文本。

  ③HTTP協議和HTTPS,借用崔大書上對於HTTP協議的理解,HTTP協議是用於從網路上傳輸超文本資料到本地瀏覽器的協議,它能夠保證高效而準確的傳送超文字文件。

而HTTPS英文全稱為Hyper Text Transfer over Secure Socket Layer,也就是在應用程式層和傳輸層中間加了一層安全通訊端層(SSL),該安全通訊端層為資料的安全傳輸提供了保障。SSL層通過非對稱式加密演算法先協商出秘鑰,在通過對稱式加密演算法對傳輸的資料使用秘鑰加解密,以此來形成資料的加密,具體的加密可以參考這篇文章:50378855

  ④HTTP的請求過程,當我們在瀏覽器上輸入一個www.baidu.com,斷行符號之後我們便會在瀏覽器中看到頁面,這其中具體發生了什麼過程呢?

    1)瀏覽器向該網域名稱所在DNS伺服器發送一個請求,DNS伺服器返回給瀏覽器www.baidu.com所在的伺服器的ip地址。

    2)瀏覽器向www.baidu.com所在伺服器的ip地址進行tcp的三向交握。

    3)成功建立串連之後,發送HTTP請求報文。

    4)百度所在伺服器接受到請求之後會返回給使用者相應的響應。

    5)瀏覽器接受到響應之後會對響應進行處理個解析,將其顯示出來,同時如果沒有資料需要傳送並且使用的是短串連的話,則進行4次揮手過程中斷連線。

  ⑤HTTP的請求報包含四部分的內容,請求的方式(GET/POST),請求的路徑,要求標頭部資訊以及請求體。

    1)請求的方式:

      GET和POST請求的區別:GET請求時請求的參數會包含在URL中一起傳送給後端,參數可以在URL中看見,而POST請求會將資訊放在請求體中發送給後端,POST請求的最大好處是請求的內容是不可見的,試想一下,如果在登入的時候使用GET請求,那麼密碼將毫無保留的顯示在瀏覽器的URL中。

      其它常見的請求方式:HEAD請求:類似於GET請求,只返迴響應的頭部資訊。

                DELETE請求:請求伺服器刪除指定的頁面。

                CONNECT請求(好像沒見過,haha):以伺服器做為跳板,讓伺服器代替用戶端訪問其它頁面。

    2)要求標頭部資訊:請求的頭部包含很多重要的欄位,我們在使用爬蟲的使用需要根據具體的網頁來構造要求標頭。

      ACCEPT:用於指定用戶端可以接受哪些類型的資訊。

      HOST:用於指定請求的主機IP和連接埠號碼。

      COOKIE(提醒自己很重要):網站為了辨別使用者進行會話跟蹤而儲存在使用者本地的資料。它的主要功能就是維持會話,我們經常在訪問一個很久沒有訪問過的網站時會提示Cookie已失效,需要重新登入,其實這就是Cookie在搗鬼,Cookie在爬取那些需要登入才能擷取資料的網站時顯得格外重要。

      User-Agent(also important):我們可能在剛開始寫爬蟲時沒有任何要求標頭部資訊,這時候伺服器收到請求檢查要求標頭部資訊中的User-Agent可能會想,這個小夥子一看就是個新手,連UA都不構造就給我發請求,當我真的是傻子嘛!直接給你來一個拒絕服務。所以說,以防萬一,還是構造一下User-Agent吧。

      Content-Type:通常也叫互連網媒體類型(MIME),用來表示用戶端請求的具體類型資訊,比如,請求的是html,就需要Content-Type設定為text/html,請求的是json資料,則把Content-Type改成application/json。注意在登入的時候需要設定Content-Type為application/x-www-form-urlencoded,才會以表單的形式提交。

    3)請求體:一般請求體在使用POST方式時會將資料放在請求體中,而GET請求裡請求體為空白。

  ⑥響應

    1)常見的響應狀態代碼:

      200:請求成功

      301:請求的網頁已經永久移動到新的位置

      302:請求的網頁暫時跳轉到其他頁面

      403:Forbidden,伺服器拒絕此請求

      404:Not Found,伺服器找不到請求的網頁

      405:Bad Method,伺服器禁止這種請求方式

      500:伺服器內部錯誤

    2)回應標頭部資訊,這裡只列了幾個常見的。

      Content-Type:指定返回的資料類型是什麼。

      Set-Cookie:設定Cookie,告訴瀏覽器需要將此內容放在Cookie中,下次請求給帶上。

      Content-Encoding:指定響應內容的編碼。

    3)響應體:通常是伺服器返回給我們的資料,如網頁的原始碼,json資料等等,如果想要知道到底是什麼,可以通過F12調出開發人員工具並使用Network工具來查看。

這一篇HTTP基本原理就寫到這裡吧,下一篇網頁基礎和爬蟲基本原理。先不說了,我要學習。

Python爬蟲學習一------HTTP的基本原理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.