另外,文末也有視" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > 入門HTTP協(xié)議看這篇文章就夠了 - 爬蟲(chóng)和Web開(kāi)發(fā)必備!

入門HTTP協(xié)議看這篇文章就夠了 - 爬蟲(chóng)和Web開(kāi)發(fā)必備!

時(shí)間:2023-08-19 14:18:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-08-19 14:18:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)

入門HTTP協(xié)議看這篇文章就夠了 - 爬蟲(chóng)和Web開(kāi)發(fā)必備?。篐TTP對(duì)于爬蟲(chóng)是重中之重,對(duì)于學(xué)Web開(kāi)發(fā)(前端或者后端)也是必備技能。本文涵蓋了HTTP的必要知識(shí)點(diǎn),把本文看透,基本夠用了,然后再按需適當(dāng)擴(kuò)展就可以了。

另外,文末也有視頻本教程的視頻鏈接。

1. 原理介紹

爬蟲(chóng)就是用程序模擬瀏覽器的行為,發(fā)送請(qǐng)求給服務(wù)器,獲取網(wǎng)頁(yè)的內(nèi)容,解析網(wǎng)頁(yè)數(shù)據(jù)。

要學(xué)會(huì)爬蟲(chóng),先要了解瀏覽器是如何和服務(wù)器交流的。瀏覽器通過(guò)HTTP協(xié)議和服務(wù)器交流。

2. HTTP協(xié)議簡(jiǎn)介

簡(jiǎn)介

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,主要用于網(wǎng)頁(yè)的傳輸,現(xiàn)在也常應(yīng)用網(wǎng)絡(luò)API的開(kāi)發(fā)(Restful API)。

HTTP是一個(gè)TCP/IP通信協(xié)議的最上層的協(xié)議之一(HTML 文件, 圖片文件, 查詢結(jié)果等)。TCP/IP協(xié)議有興趣的可以自行學(xué)習(xí),做Web開(kāi)發(fā)的需要學(xué)習(xí)一下,對(duì)于爬蟲(chóng)不是必要內(nèi)容。

以訪問(wèn)百度首頁(yè)為例,可以看到網(wǎng)址的最前面就是http。

這里是https,你可以暫時(shí)忽略后面的s,https相對(duì)于http添加了數(shù)字證書加密功能,這不影響正常的爬蟲(chóng)。但寫爬取的時(shí)候也要添加s,現(xiàn)在大部分網(wǎng)站都是https的。
了解https,請(qǐng)參考麥?zhǔn)宓奈恼拢溄右?jiàn)底部第一篇。

基本工作原理

HTTP是瀏覽器或者其他客戶端(如手機(jī)App)和網(wǎng)站服務(wù)器之間溝通的協(xié)議。

瀏覽器作為HTTP客戶端通過(guò)URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請(qǐng)求。

常用的Web服務(wù)器有:Nginx,Apache,IIS服務(wù)器(微軟的產(chǎn)品)等。

Web服務(wù)器接收到的請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息。

HTTP默認(rèn)端口號(hào)為80,但是你也可以改為8080或者其他端口。

HTTP三個(gè)要點(diǎn)

3. chrome瀏覽器和開(kāi)發(fā)者工具

這個(gè)課程我們要使用chrome瀏覽器和它自帶的開(kāi)發(fā)者工具。

如果你還沒(méi)有安裝chrome瀏覽器,請(qǐng)下載和安裝Chrome瀏覽器,麥?zhǔn)甯咚夔R像下載地址:

https://blog.qingke.me/post/10

我們可以使用chrome來(lái)查看http的請(qǐng)求信息,基本操作步驟如下:




4. HTTP的消息結(jié)構(gòu)

主要流程和概念

請(qǐng)求和響應(yīng)例子

客戶端請(qǐng)求:

GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi服務(wù)端響應(yīng):

HTTP/1.1 200 OKDate: Mon, 27 Jul 2009 12:28:53 GMTServer: ApacheLast-Modified: Wed, 22 Jul 2009 19:15:56 GMTETag: "34aa387-d-1568eb00"Accept-Ranges: bytesContent-Length: 51Vary: Accept-EncodingContent-Type: text/plain響應(yīng)內(nèi)容:

Hello World! My payload includes a trailing CRLF.

一個(gè)很好用看請(qǐng)求的網(wǎng)站 http://httpbin.org/get

通過(guò)這個(gè)網(wǎng)站可以更簡(jiǎn)單的查看請(qǐng)求的詳細(xì)信息。

可以通過(guò)Python代碼模擬各種請(qǐng)求參數(shù)和header,發(fā)送給這個(gè)網(wǎng)站,再來(lái)驗(yàn)證發(fā)送的是否正確。

5. 完整的網(wǎng)頁(yè)請(qǐng)求過(guò)程

注意你看到一個(gè)網(wǎng)頁(yè),通常是分多次請(qǐng)求的,一般的過(guò)程為:

所以在chrome中可以看到很多個(gè)請(qǐng)求。如下圖所示:

這種特點(diǎn)給爬蟲(chóng)帶來(lái)困難:

解決這個(gè)問(wèn)題辦法通常有兩個(gè):

6. 請(qǐng)求

1) 請(qǐng)求行

下面例子中的第一行就是請(qǐng)求行,它包含幾個(gè)關(guān)鍵信息:

GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi

2) 請(qǐng)求方法

根據(jù) HTTP 標(biāo)準(zhǔn),HTTP 請(qǐng)求可以使用多種請(qǐng)求方法,這些方法表示這個(gè)請(qǐng)求要做什么。

HTTP1.0 定義了三種請(qǐng)求方法:GET, POST 和 HEAD方法。

HTTP1.1 新增了六種請(qǐng)求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

最常用的請(qǐng)求方法是:

這是最基本應(yīng)該掌握的兩個(gè)點(diǎn)。下面是完整的HTTP請(qǐng)求方法。

序號(hào)方法描述

3) 請(qǐng)求參數(shù)

GET請(qǐng)求的參數(shù)

GET 請(qǐng)求的參數(shù)都是放在URL中的,網(wǎng)頁(yè)看見(jiàn):

請(qǐng)求參數(shù)是以鍵值對(duì)的形式出現(xiàn),一般形式為:

舉例:https://www.example.com/page1?參數(shù)1=參數(shù)1的值&參數(shù)2=參數(shù)2的值

看一下,上面的截圖中有哪些參數(shù),它們的值分別是什么?

POST請(qǐng)求的參數(shù)

格式舉例:

GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi{'name':'麥?zhǔn)?#39;, '特征':'帥','坐標(biāo)':'一個(gè)美麗的城市'}

4) 請(qǐng)求頭

這部分內(nèi)容非常重要,這是爬蟲(chóng)的關(guān)鍵技術(shù)之一,因?yàn)榉?wù)器通常通過(guò)請(qǐng)求頭來(lái):

下面是一個(gè)請(qǐng)求頭列表,其中最重要的幾個(gè)是:

Header解釋示例

7. 響應(yīng)

1) 狀態(tài)碼

當(dāng)瀏覽者訪問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),瀏覽者的瀏覽器會(huì)向網(wǎng)頁(yè)所在服務(wù)器發(fā)出請(qǐng)求。當(dāng)瀏覽器接收并顯示網(wǎng)頁(yè)前,此網(wǎng)頁(yè)所在的服務(wù)器會(huì)返回一個(gè)包含HTTP狀態(tài)碼的信息頭(server header)用以響應(yīng)瀏覽器的請(qǐng)求。

HTTP狀態(tài)碼的英文為HTTP Status Code。

下面是常見(jiàn)的HTTP狀態(tài)碼:

HTTP狀態(tài)碼由三個(gè)數(shù)字組成,第一個(gè)數(shù)字定義了狀態(tài)碼的類型,后兩個(gè)數(shù)字表示具體的狀態(tài)。HTTP狀態(tài)碼共分為5種類型:

分類分類描述
HTTP狀態(tài)碼列表:

狀態(tài)碼狀態(tài)碼英文名稱中文描述

2) 響應(yīng)頭

HTTP響應(yīng)頭包含了網(wǎng)頁(yè)的重要描述信息,比如網(wǎng)頁(yè)的格式,網(wǎng)頁(yè)的過(guò)期時(shí)間等。

注意下面的Set-Cookie,它會(huì)設(shè)置網(wǎng)頁(yè)的Cookie,在后面的請(qǐng)求中發(fā)送給服務(wù)器端,用來(lái)做身份判定或者反爬。

應(yīng)答頭說(shuō)明

3) 響應(yīng)內(nèi)容和content type

我們最常見(jiàn)的網(wǎng)頁(yè)的內(nèi)容格式為:

其實(shí)除此之外,還有圖片,樣式表,JavaScript等。

Content-Type就表示了網(wǎng)頁(yè)的內(nèi)容類型,它告訴瀏覽器文件類型,網(wǎng)頁(yè)編碼,幫助瀏覽器決定將以什么形式、什么編碼讀取這個(gè)文件。

Content-Type 標(biāo)頭告訴客戶端實(shí)際返回的內(nèi)容的內(nèi)容類型。

語(yǔ)法格式:

Content-Type: text/html; charset=utf-8Content-Type: multipart/form-data; boundary=something實(shí)例:

常見(jiàn)的媒體格式類型如下:

以application開(kāi)頭的媒體格式類型:

另外一種常見(jiàn)的媒體格式是上傳文件之時(shí)使用的:

看視頻

配套視頻在B站,搜索“麥?zhǔn)寰幊獭保?/b>不要吝嗇你的三連。

我是麥?zhǔn)?,帶你學(xué)編程,陪你走職場(chǎng)的路。

關(guān)鍵詞:爬蟲(chóng),協(xié)議,文章,入門

74
73
25
news
  • 網(wǎng)站
  • 營(yíng)銷
  • 設(shè)計(jì)
  • 運(yùn)營(yíng)
  • 優(yōu)化
  • 效率
  • 專注
  • 電商
  • 方案
  • 推廣
為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉