爬蟲(chóng)中的HTTP是什么

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)爬蟲(chóng)中的HTTP是什么,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、內(nèi)丘網(wǎng)站維護(hù)、網(wǎng)站推廣。

在學(xué)習(xí)爬蟲(chóng)的過(guò)程中,相信大家對(duì)HTTP這個(gè)詞已經(jīng)不陌生了,它好像從未離開(kāi)過(guò)我們的視線(xiàn)。被迫所需,我們每次都要使用開(kāi)發(fā)者工具去查看請(qǐng)求頭,響應(yīng)頭,以及頭中的各個(gè)字段,使用別人封裝好的模塊填入信息,敲幾行代碼就解決了。面對(duì)簡(jiǎn)單的爬取任務(wù),我們也許根本不用管它是什么,但可能等我們真正遇到問(wèn)題的時(shí)候,卻無(wú)從下手。

什么是http? 

超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。

1960年美國(guó)人Ted Nelson構(gòu)思了一種通過(guò)計(jì)算機(jī)處理文本信息的方法,并稱(chēng)之為超文本(hypertext),這成為了HTTP超文本傳輸協(xié)議標(biāo)準(zhǔn)架構(gòu)的發(fā)展根基。Ted Nelson組織協(xié)調(diào)萬(wàn)維網(wǎng)協(xié)會(huì)(World Wide Web Consortium)和互聯(lián)網(wǎng)工程工作小組(Internet Engineering Task Force )共同合作研究,最終發(fā)布了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。

http模型

HTTP采用了瀏覽器/服務(wù)器這種請(qǐng)求/響應(yīng)模型,瀏覽器永遠(yuǎn)是HTTP請(qǐng)求的發(fā)起者,服務(wù)器為響應(yīng)者。這樣在瀏覽器客戶(hù)端沒(méi)有發(fā)起請(qǐng)求的情況下,服務(wù)器是不能主動(dòng)推送消息給客戶(hù)端的。

http的定位

HTTP是一個(gè)應(yīng)用層協(xié)議,是我們想從服務(wù)器端獲取信息的最直觀的請(qǐng)求。比如,在爬蟲(chóng)中使用的<urllib模塊>,<requests模塊>等都是封裝了HTTP協(xié)議,作為一個(gè)HTTP客戶(hù)端實(shí)現(xiàn)了博文,圖片,視頻等信息源的下載。

但是HTTP也不是直接就可以用的,它的請(qǐng)求是建立在一些底層協(xié)議的基礎(chǔ)上完成的。如TCP/IP協(xié)議棧中,HTTP需要TCP的三次握手連接成功后才能向服務(wù)器發(fā)起請(qǐng)求。當(dāng)然,如果是HTTPS的話(huà),還需要TSL和SSL安全層。

一個(gè)完整的HTTP請(qǐng)求

既然HTTP協(xié)議需要建立在其它底層協(xié)議基礎(chǔ)上,我們來(lái)看看一個(gè)完整的HTTP請(qǐng)求是什么樣的。

當(dāng)我們點(diǎn)擊一個(gè)鏈接或者輸入一個(gè)鏈接的時(shí)候,整個(gè)HTTP的請(qǐng)求過(guò)程就開(kāi)始了,然后經(jīng)過(guò)以下步驟得到最后的信息,我們這里簡(jiǎn)單介紹一下前四個(gè)步驟,旨在了解HTTP。

<1> 域名解析

首先會(huì)搜索各種本地DNS緩存,如果沒(méi)有就會(huì)向DNS服務(wù)器(互聯(lián)網(wǎng)提供商)發(fā)起域名解析,以獲取IP地址。

<2> 建立TCP連接

當(dāng)獲取IP后,將創(chuàng)建套接字socket連接,也就是TCP的3次握手連接,默認(rèn)端口號(hào)80。

<3> HTTP請(qǐng)求

一旦TCP連接成功后,瀏覽器/爬蟲(chóng)就可以向服務(wù)器發(fā)起HTTP請(qǐng)求報(bào)文了,報(bào)文內(nèi)容包含請(qǐng)求行、請(qǐng)求頭部、請(qǐng)求主體。

<4> 服務(wù)器響應(yīng)

服務(wù)器響應(yīng),并返回一個(gè)HTTP響應(yīng)包(如果成功會(huì)返回狀態(tài)碼200)和請(qǐng)求的HTML代碼。

響應(yīng)HTTP請(qǐng)求會(huì)返回響應(yīng)狀態(tài)碼,根據(jù)狀態(tài)碼可以知道返回信息的狀態(tài)。狀態(tài)碼規(guī)定如下:

1xx: 信息響應(yīng)類(lèi),表示接收到請(qǐng)求并且繼續(xù)處理

      100——必須繼續(xù)發(fā)出請(qǐng)求

      101——要求服務(wù)器根據(jù)請(qǐng)求轉(zhuǎn)換HTTP協(xié)議版本

2xx: 處理成功響應(yīng)類(lèi),表示動(dòng)作被成功接收、理解和接受

200——交易成功

201——提示知道新文件的URL

202——接受和處理、但處理未完成

203——返回信息不確定或不完整

204——請(qǐng)求收到,但返回信息為空

205——服務(wù)器完成了請(qǐng)求,用戶(hù)代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過(guò)的文件

206——服務(wù)器已經(jīng)完成了部分用戶(hù)的GET請(qǐng)求

3xx: 重定向響應(yīng)類(lèi),為了完成指定的動(dòng)作,必須接受進(jìn)一步處理

300——請(qǐng)求的資源可在多處得到

301——?jiǎng)h除請(qǐng)求數(shù)據(jù)

302——在其他地址發(fā)現(xiàn)了請(qǐng)求數(shù)據(jù)

303——建議客戶(hù)訪問(wèn)其他URL或訪問(wèn)方式

304——客戶(hù)端已經(jīng)執(zhí)行了GET,但文件未變化

305——請(qǐng)求的資源必須從服務(wù)器指定的地址得到

306——前一版本HTTP中使用的代碼,現(xiàn)行版本中不再使用

307——申明請(qǐng)求的資源臨時(shí)性刪除

4xx: 客戶(hù)端錯(cuò)誤,客戶(hù)請(qǐng)求包含語(yǔ)法錯(cuò)誤或者是不能正確執(zhí)行

400——錯(cuò)誤請(qǐng)求,如語(yǔ)法錯(cuò)誤

401——未授權(quán)

402——保留有效ChargeTo頭響應(yīng)

403——禁止訪問(wèn)

404——沒(méi)有發(fā)現(xiàn)文件、查詢(xún)或URl

405——在Request-Line字段定義的方法不允許

406——根據(jù)發(fā)送的Accept,請(qǐng)求資源不可訪問(wèn)

407——用戶(hù)必須首先在代理服務(wù)器上得到授權(quán)

408——客戶(hù)端沒(méi)有在指定的時(shí)間內(nèi)完成請(qǐng)求

409——對(duì)當(dāng)前資源狀態(tài),請(qǐng)求不能完成

410——服務(wù)器不再有此資源且無(wú)進(jìn)一步地址

411——服務(wù)器拒絕用戶(hù)定義的Content-Length

412——一個(gè)或多個(gè)請(qǐng)求頭字段在當(dāng)前請(qǐng)求中錯(cuò)誤

413——請(qǐng)求的資源大于服務(wù)器允許的大小

414——請(qǐng)求的資源URL長(zhǎng)于服務(wù)器允許的長(zhǎng)度

415——請(qǐng)求資源不支持請(qǐng)求項(xiàng)目格式

416——請(qǐng)求中包含Range請(qǐng)求頭字段,在當(dāng)前請(qǐng)求資源范圍內(nèi)沒(méi)有range指示值,請(qǐng)求也不包含If-Range請(qǐng)求頭字段

417——服務(wù)器不滿(mǎn)足請(qǐng)求Expect頭字段指定的期望值,如果是代理服務(wù)器,可能是下一級(jí)服務(wù)器不能滿(mǎn)足請(qǐng)求長(zhǎng)。

5xx: 服務(wù)端錯(cuò)誤,服務(wù)器不能正確執(zhí)行一個(gè)正確的請(qǐng)求

500——內(nèi)部服務(wù)器錯(cuò)誤

501——未實(shí)現(xiàn)

502——網(wǎng)關(guān)錯(cuò)誤

上述就是小編為大家分享的爬蟲(chóng)中的HTTP是什么了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享題目:爬蟲(chóng)中的HTTP是什么
鏈接地址:http://bm7419.com/article18/iidjgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、電子商務(wù)、網(wǎng)站改版、網(wǎng)站維護(hù)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名