最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python網(wǎng)絡(luò)爬蟲之HTTP原理

 更新時(shí)間:2023年04月10日 11:10:54   作者:愛吃餅干的小白鼠  
在寫爬蟲之前,我們還需要了解一些基礎(chǔ)知識(shí),如HTTP原理、網(wǎng)頁的基礎(chǔ)知識(shí)、爬蟲的基本原理、Cookies的基本原理等。本文中,我們就對(duì)這些基礎(chǔ)知識(shí)做一個(gè)簡單的總結(jié),需要的朋友參考一下

??爬蟲基礎(chǔ)

在寫爬蟲之前,我們還需要了解一些基礎(chǔ)知識(shí),如HTTP原理、網(wǎng)頁的基礎(chǔ)知識(shí)、爬蟲的基本原理、Cookies的基本原理等。本文中,我們就對(duì)這些基礎(chǔ)知識(shí)做一個(gè)簡單的總結(jié)。

??HTTP 基本原理

在本文中,我們會(huì)詳細(xì)了解 HTTP的基本原理,了解在瀏覽器中敲入U(xiǎn)RL 到獲取網(wǎng)頁內(nèi)容之間發(fā)生了什么。了解了這些內(nèi)容,有助于我們進(jìn)一步了解爬蟲的基本原理。

?URI和 URL

這里我們先了解一下URI和URL,URI的全稱為Uniform Resource Identifier,即統(tǒng)―資源標(biāo)志符,URL的全稱為Universal Resource Locator,即統(tǒng)一資源定位符。

URL是URI的子集,也就是說每個(gè)URL都是URI,但不是每個(gè)URI都是 URL。那么,怎樣的URI不是URL呢?URI還包括一個(gè)子類叫作 URN,它的全稱為Universal Resource Name,即統(tǒng)―資源名稱。URN 只命名資源而不指定如何定位資源,比如urn:isbn:0451450523指定了一本書的ISBN,可以唯一標(biāo)識(shí)這本書,但是沒有指定到哪里定位這本書,這就是URN。URL、URN和URI的關(guān)系。

但是在目前的互聯(lián)網(wǎng)中,URN用得非常少,所以幾乎所有的URI都是URL,一般的網(wǎng)頁鏈接我們既可以稱為URL,也可以稱為URI,我個(gè)人習(xí)慣稱為URL。

?超文本

接下來,我們?cè)倭私庖灰粋€(gè)概念——超文本, 其英文名稱叫作hypertext,我們?cè)跒g覽器里看到的網(wǎng)
頁就是超文本解析而成的,其網(wǎng)頁源代碼是一系列HTML代碼,里面包含了-系列標(biāo)簽,比如img顯
示圖片,p指定顯示段落等。瀏覽器解析這些標(biāo)簽后,便形成了我們平??吹降木W(wǎng)頁,而網(wǎng)頁的源代碼HTML就可以稱作超文本。

例如,我們?cè)贑hrome瀏覽器里面打開任意一一個(gè)頁面,如淘寶首頁,右擊任一地方并選擇 “檢查”
項(xiàng)(或者直接按快捷鍵F12),即可打開瀏覽器的開發(fā)者工具,這時(shí)在Elements 選項(xiàng)卡即可看到當(dāng)前
網(wǎng)頁的源代碼,這些源代碼都是超文本,如圖所示。

?HTTP 和HTTPS

在百度的首頁, URL的開頭會(huì)有http 或https,這就是訪問資源需要的協(xié)議類型。有時(shí),我們還會(huì)看到ftp、sftp、 smb 開頭的URL,它們都是協(xié)議類型。在爬蟲中,我們抓取的頁面通常就是http或https協(xié)議的,這里首先了解一下這兩 個(gè)協(xié)議的含義。

HTTP的全稱是Hyper Text Transfer Protocol, 中文名叫作超文本傳輸協(xié)議。HTTP協(xié)議是用于從網(wǎng)絡(luò)傳輸超文本數(shù)據(jù)到本地瀏覽器的傳送協(xié)議,它能保證高效而準(zhǔn)確地傳送超文本文檔。HTTP由萬維網(wǎng)協(xié)會(huì)( World Wide Web Consortium )和Internet工作小組IETF ( Internet Engineering Task Force )共同合作制定的規(guī)范,目前廣泛使用的是HTTP1.1版本。

HTTPS的全稱是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全為目標(biāo)的HTTP
通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,簡稱為HTTPS。

HTTPS的安全基礎(chǔ)是SSL,因此通過它傳輸?shù)膬?nèi)容都是經(jīng)過SSL加密的,它的主要作用可以分
為兩種。

  • 建立一個(gè)信息安全通道來保證數(shù)據(jù)傳輸?shù)陌踩?/li>
  • 確認(rèn)網(wǎng)站的真實(shí)性,凡是使用了HTTPS的網(wǎng)站,都可以通過點(diǎn)擊瀏覽器地址欄的鎖頭標(biāo)志來查看網(wǎng)站認(rèn)證之后的真實(shí)信息,也可以通過CA機(jī)構(gòu)頒發(fā)的安全簽章來查詢。

 現(xiàn)在越來越多的網(wǎng)站和App都已經(jīng)向HTTPS方向發(fā)展,例如:

  • 蘋果公司強(qiáng)制所有ioS App在2017年1月1日前全部改為使用HTTPS加密,否則App就無法在應(yīng)用商店上架。
  • 谷歌從2017年1月推出的Chrome 56開始,對(duì)未進(jìn)行HTTPS加密的網(wǎng)址鏈接亮出風(fēng)險(xiǎn)提示,即在地址欄的顯著位置提醒用戶“此網(wǎng)頁不安全" 。
  • 騰訊微信小程序的官方需求文檔要求后臺(tái)使用HTTPS請(qǐng)求進(jìn)行網(wǎng)絡(luò)通信,不滿足條件的域名和協(xié)議無法請(qǐng)求。

 ?HTTP 請(qǐng)求過程

我們?cè)跒g覽器中輸人一一個(gè)URL,回車之后便會(huì)在瀏覽器中觀察到頁面內(nèi)容。實(shí)際上,這個(gè)過程是

瀏覽器向網(wǎng)站所在的服務(wù)器發(fā)送了一個(gè)請(qǐng)求,網(wǎng)站服務(wù)器接收到這個(gè)請(qǐng)求后進(jìn)行處理和解析,然后返回對(duì)應(yīng)的響應(yīng),接著傳回給瀏覽器。響應(yīng)里包含了頁面的源代碼等內(nèi)容,瀏覽器再對(duì)其進(jìn)行解析,便將網(wǎng)頁呈現(xiàn)了出來。

 此處客戶端即代表我們自己的PC或手機(jī)瀏覽器,服務(wù)器即要訪問的網(wǎng)站所在的服務(wù)器。

?請(qǐng)求

請(qǐng)求,由客戶端向服務(wù)端發(fā)出,可以分為4部分內(nèi)容:請(qǐng)求方法( Request Method)、請(qǐng)求的網(wǎng)址
( Request URL )、請(qǐng)求頭( Request Headers )、請(qǐng)求體( Request Body )。

  • 請(qǐng)求方法

常見的請(qǐng)求方法有兩種: GET和POST。

在瀏覽器中直接輸入U(xiǎn)RL并回車,這便發(fā)起了一個(gè)GET請(qǐng)求,請(qǐng)求的參數(shù)會(huì)直接包含到URL里。例如,在百度中搜索Python,這就是一一個(gè)GET請(qǐng)求,鏈接為htps://www baidu. com/,其中URL中包含了請(qǐng)求的參數(shù)信息,這里參數(shù)wd表示要搜尋的關(guān)鍵字。POST 請(qǐng)求大多在表單提交時(shí)發(fā)起。比如,對(duì)于一個(gè)登錄表單,輸人用戶名和密碼后,點(diǎn)擊“登錄”按鈕,這通常會(huì)發(fā)起一個(gè) POST請(qǐng)求,其數(shù)據(jù)通常以表單的形式傳輸,而不會(huì)體現(xiàn)在URL中。

GET和POST請(qǐng)求方法有如下區(qū)別:

  • GET請(qǐng)求中的參數(shù)包含在URL里面,數(shù)據(jù)可以在URL中看到,而POST請(qǐng)求的URL不會(huì)包含這些數(shù)據(jù),數(shù)據(jù)都是通過表單形式傳輸?shù)?,?huì)包含在請(qǐng)求體中。
  • GET請(qǐng)求提交的數(shù)據(jù)最多只有1024字節(jié),而POST方式?jīng)]有限制。

一般來說,登錄時(shí),需要提交用戶名和密碼,其中包含了敏感信息,使用GET方式請(qǐng)求的話,密碼就會(huì)暴露在URL里面,造成密碼泄露,所以這里最好以POST方式發(fā)送。上傳文件時(shí),由于文件內(nèi)容比較大,也會(huì)選用POST方式。

我們平常遇到的絕大部分請(qǐng)求都是GET或POST請(qǐng)求,另外還有一些請(qǐng)求方法, 如GET、HEAD、
POST、PUT、 DELETE、OPTIONS、CONNECT、TRACE等。

  • 請(qǐng)求的網(wǎng)址
請(qǐng)求的網(wǎng)址,即統(tǒng)一資源定 位符URL,它可以唯一確定 我們想請(qǐng)求的資源。
  • 請(qǐng)求頭
請(qǐng)求頭,用來說明服務(wù)器要使用的附加信息,比較重要的信息有Cookie . Referer. User-Agent等。
  • 請(qǐng)求體
請(qǐng)求體一般承載的內(nèi)容是 POST請(qǐng)求中的表單數(shù)據(jù),而對(duì)于GET請(qǐng)求,請(qǐng)求體則為空。

?響應(yīng)

響應(yīng),由服務(wù)端返回給客戶端,可以分為三部分:響應(yīng)狀態(tài)碼( Response Status Code).響應(yīng)頭( Response Headers )和響應(yīng)體( Response Body )。

  •  響應(yīng)狀態(tài)碼
響應(yīng)狀態(tài)碼表示服務(wù)器的響應(yīng)狀態(tài),如200代表服務(wù)器正常響應(yīng),404代表頁面未找到,500代表
服務(wù)器內(nèi)部發(fā)生錯(cuò)誤。在爬蟲中,我們可以根據(jù)狀態(tài)碼來判斷服務(wù)器響應(yīng)狀態(tài),如狀態(tài)碼為200,則
證明成功返回?cái)?shù)據(jù),再進(jìn)行進(jìn)一步的處理, 否則直接忽略。
 
  • 響應(yīng)頭
響應(yīng)頭包含了服務(wù)器對(duì)請(qǐng)求的應(yīng)答信息,如Content-Type、Server、 Set-Cookie 等。
  • 響應(yīng)體
最重要的當(dāng)屬響應(yīng)體的內(nèi)容了。響應(yīng)的正文數(shù)據(jù)都在響應(yīng)體中,比如請(qǐng)求網(wǎng)頁時(shí),它的響應(yīng)體
就是網(wǎng)頁的HTML代碼;請(qǐng)求- -張圖片時(shí) ,它的響應(yīng)體就是圖片的二進(jìn)制數(shù)據(jù)。我們做爬蟲請(qǐng)
求網(wǎng)頁后,要解析的內(nèi)容就是響應(yīng)體.

到此這篇關(guān)于Python網(wǎng)絡(luò)爬蟲之HTTP原理的文章就介紹到這了,更多相關(guān)Python網(wǎng)絡(luò)HTTP原理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Numpy 高效的運(yùn)算工具詳解

    Python Numpy 高效的運(yùn)算工具詳解

    這篇文章主要介紹了Python numpy矩陣處理運(yùn)算工具用法匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • python 列表,集合和字典的增刪改查

    python 列表,集合和字典的增刪改查

    這篇文章主要介紹了python 列表,集合和字典的增刪改查,本文分別對(duì)他們一一說明,小編覺得這篇文章寫的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • 基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別

    基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別

    這篇文章主要為大家詳細(xì)介紹了基于python+opencv調(diào)用電腦攝像頭實(shí)現(xiàn)實(shí)時(shí)人臉眼睛以及微笑識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 實(shí)例講解Python設(shè)計(jì)模式編程之工廠方法模式的使用

    實(shí)例講解Python設(shè)計(jì)模式編程之工廠方法模式的使用

    這篇文章主要介紹了Python設(shè)計(jì)模式編程之工廠方法模式的運(yùn)用實(shí)例,文中也對(duì)Factory Method模式中涉及到的角色作出了解析,需要的朋友可以參考下
    2016-03-03
  • 使用Python腳本操作MongoDB的教程

    使用Python腳本操作MongoDB的教程

    這篇文章主要介紹了使用Python腳本操作MongoDB的教程,MongoDB作為非關(guān)系型數(shù)據(jù)庫得到了很大的宣傳力度,而市面上的教程一般都是講解JavaScript的腳本操作,本文則是基于Python,需要的朋友可以參考下
    2015-04-04
  • python中閉包Closure函數(shù)作為返回值的方法示例

    python中閉包Closure函數(shù)作為返回值的方法示例

    閉包(closure)是函數(shù)式編程的重要的語法結(jié)構(gòu),Python也支持這一特性,下面這篇文章主要給大家介紹了關(guān)于python中閉包Closure函數(shù)作為返回值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • Django如何實(shí)現(xiàn)內(nèi)容緩存示例詳解

    Django如何實(shí)現(xiàn)內(nèi)容緩存示例詳解

    緩存對(duì)于大家來說應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Django如何實(shí)現(xiàn)內(nèi)容緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-09-09
  • python實(shí)現(xiàn)一個(gè)簡單RPC框架的示例

    python實(shí)現(xiàn)一個(gè)簡單RPC框架的示例

    本文將會(huì)使用Python實(shí)現(xiàn)一個(gè)最簡單的RPC框架,不具有實(shí)用意義,但可以讓你清醒地理解RPC框架的幾個(gè)組成部分,只是比看Python自帶的xmlrpc清晰。
    2020-10-10
  • python執(zhí)行外部程序的常用方法小結(jié)

    python執(zhí)行外部程序的常用方法小結(jié)

    這篇文章主要介紹了python執(zhí)行外部程序的常用方法,實(shí)例總結(jié)了Python使用os模塊及commands模塊執(zhí)行外部程序的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python下應(yīng)用opencv 實(shí)現(xiàn)人臉檢測功能

    Python下應(yīng)用opencv 實(shí)現(xiàn)人臉檢測功能

    OpenCV是如今最流行的計(jì)算機(jī)視覺庫,今天我們通過本文給大家分享Python下應(yīng)用opencv 實(shí)現(xiàn)人臉檢測功能,感興趣的朋友跟隨小編一起看看吧
    2019-10-10

最新評(píng)論

兴海县| 涪陵区| 德江县| 黔江区| 马边| 吉首市| 陆川县| 浮山县| 博爱县| 宜宾县| 杂多县| 隆尧县| 伊金霍洛旗| 博爱县| 开化县| 揭东县| 称多县| 沙雅县| 门源| 平泉县| 绥宁县| 卢氏县| 西充县| 西林县| 峡江县| 平阴县| 开原市| 赣榆县| 阳泉市| 鄂托克旗| 葫芦岛市| 德阳市| 柘城县| 民勤县| 丽江市| 长武县| 平度市| 平安县| 任丘市| 吉水县| 小金县|