国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬蟲入門教程--快速理解HTTP協(xié)議(一)

2020-02-16 01:34:12
字體:
供稿:網(wǎng)友

前言

爬蟲的基本原理是模擬瀏覽器進行 HTTP 請求,理解 HTTP 協(xié)議是寫爬蟲的必備基礎(chǔ),招聘網(wǎng)站的爬蟲崗位也赫然寫著熟練掌握HTTP協(xié)議規(guī)范,寫爬蟲還不得不先從HTTP協(xié)議開始講起

HTTP協(xié)議是什么?

你瀏覽的每一個網(wǎng)頁都是基于 HTTP 協(xié)議呈現(xiàn)的,HTTP 協(xié)議是互聯(lián)網(wǎng)應用中,客戶端(瀏覽器)與服務(wù)器之間進行數(shù)據(jù)通信的一種協(xié)議。協(xié)議中規(guī)定了客戶端應該按照什么格式給服務(wù)器發(fā)送請求,同時也約定了服務(wù)端返回的響應結(jié)果應該是什么格式。

只要大家都按照協(xié)議規(guī)定方式發(fā)起請求和返回響應結(jié)果,任何人都可以基于HTTP協(xié)議實現(xiàn)自己的Web客戶端(瀏覽器、爬蟲)和Web服務(wù)器(Nginx、Apache等)。

HTTP 協(xié)議本身是非常簡單的。它規(guī)定,只能由客戶端主動發(fā)起請求,服務(wù)器接收請求處理后返回響應結(jié)果,同時 HTTP 是一種無狀態(tài)的協(xié)議,協(xié)議本身不記錄客戶端的歷史請求記錄。

HTTP 協(xié)議是如何規(guī)定請求格式和響應格式的呢?換言之,客戶端按照什么格式才能正確發(fā)起 HTTP 請求呢?服務(wù)端按照什么格式返回響應結(jié)果客戶端才能正確解析?

HTTP 請求

HTTP 請求由3部分組成,分別是請求行、請求首部、請求體,首部和請求體是可選的,并不是每個請求都需要的。

請求行

請求行是每個請求必不可少的部分,它由3部分組成,分別是請求方法(method)、請求URL(URI)、HTTP協(xié)議版本,以空格隔開。

HTTP協(xié)議中最常用的請求方法有:GET、POST、PUT、DELETE。GET 方法用于從服務(wù)器獲取資源,90%的爬蟲都是基于GET請求抓取數(shù)據(jù)。

請求 URL 是指資源所在服務(wù)器的路徑地址,比如上圖的例子表示客戶端想獲取 index.html 這個資源,它的路徑在服務(wù)器 foofish.net 的根目錄(/)下面。

請求首部

因為請求行所攜帶的信息量非常有限,以至于客戶端還有很多想向服務(wù)器要說的事情不得不放在請求首部(Header),請求首部用于給服務(wù)器提供一些額外的信息,比如 User-Agent 用來表明客戶端的身份,讓服務(wù)器知道你是來自瀏覽器的請求還是爬蟲,是來自 Chrome 瀏覽器還是 FireFox。HTTP/1.1 規(guī)定了47種首部字段類型。HTTP首部字段的格式很像 Python 中的字典類型,由鍵值對組成,中間用冒號隔開。比如:

User-Agent: Mozilla/5.0

因為客戶端發(fā)送請求時,發(fā)送的數(shù)據(jù)(報文)是由字符串構(gòu)成的,為了區(qū)分請求首部的結(jié)尾和請求體的開始,用一個空行來表示,遇到空行時,就表示這是首部的結(jié)尾,請求體的開始。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴江市| 田林县| 石渠县| 三原县| 灵寿县| 新河县| 诏安县| 德格县| 黄梅县| 九龙坡区| 手游| 武功县| 余干县| 南和县| 松滋市| 屯留县| 调兵山市| 东乌| 邓州市| 黔东| 景泰县| 廉江市| 崇仁县| 喜德县| 西贡区| 庄河市| 东乌珠穆沁旗| 北京市| 嵩明县| 新龙县| 彭泽县| 安平县| 揭西县| 清水河县| 云林县| 平顺县| 云南省| 陈巴尔虎旗| 聂拉木县| 来宾市| 澄迈县|