您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python網絡爬蟲之HTTP原理是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在本文中,我們會詳細了解 HTTP的基本原理,了解在瀏覽器中敲入URL 到獲取網頁內容之間發生了什么。了解了這些內容,有助于我們進一步了解爬蟲的基本原理。
這里我們先了解一下URI和URL,URI的全稱為Uniform Resource Identifier,即統―資源標志符,URL的全稱為Universal Resource Locator,即統一資源定位符。
URL是URI的子集,也就是說每個URL都是URI,但不是每個URI都是 URL。那么,怎樣的URI不是URL呢?URI還包括一個子類叫作 URN,它的全稱為Universal Resource Name,即統―資源名稱。URN 只命名資源而不指定如何定位資源,比如urn:isbn:0451450523指定了一本書的ISBN,可以唯一標識這本書,但是沒有指定到哪里定位這本書,這就是URN。URL、URN和URI的關系。
但是在目前的互聯網中,URN用得非常少,所以幾乎所有的URI都是URL,一般的網頁鏈接我們既可以稱為URL,也可以稱為URI,我個人習慣稱為URL。
接下來,我們再了解一一個概念——超文本, 其英文名稱叫作hypertext,我們在瀏覽器里看到的網
頁就是超文本解析而成的,其網頁源代碼是一系列HTML代碼,里面包含了-系列標簽,比如img顯
示圖片,p指定顯示段落等。瀏覽器解析這些標簽后,便形成了我們平常看到的網頁,而網頁的源代碼HTML就可以稱作超文本。
例如,我們在Chrome瀏覽器里面打開任意一一個頁面,如淘寶首頁,右擊任一地方并選擇 “檢查”
項(或者直接按快捷鍵F12),即可打開瀏覽器的開發者工具,這時在Elements 選項卡即可看到當前
網頁的源代碼,這些源代碼都是超文本,如圖所示。
在百度的首頁, URL的開頭會有http 或https,這就是訪問資源需要的協議類型。有時,我們還會看到ftp、sftp、 smb 開頭的URL,它們都是協議類型。在爬蟲中,我們抓取的頁面通常就是http或https協議的,這里首先了解一下這兩 個協議的含義。
HTTP的全稱是Hyper Text Transfer Protocol, 中文名叫作超文本傳輸協議。HTTP協議是用于從網絡傳輸超文本數據到本地瀏覽器的傳送協議,它能保證高效而準確地傳送超文本文檔。HTTP由萬維網協會( World Wide Web Consortium )和Internet工作小組IETF ( Internet Engineering Task Force )共同合作制定的規范,目前廣泛使用的是HTTP1.1版本。
HTTPS的全稱是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全為目標的HTTP
通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,簡稱為HTTPS。
HTTPS的安全基礎是SSL,因此通過它傳輸的內容都是經過SSL加密的,它的主要作用可以分
為兩種。
建立一個信息安全通道來保證數據傳輸的安全。
確認網站的真實性,凡是使用了HTTPS的網站,都可以通過點擊瀏覽器地址欄的鎖頭標志來查看網站認證之后的真實信息,也可以通過CA機構頒發的安全簽章來查詢。
現在越來越多的網站和App都已經向HTTPS方向發展,例如:
蘋果公司強制所有ioS App在2017年1月1日前全部改為使用HTTPS加密,否則App就無法在應用商店上架。
谷歌從2017年1月推出的Chrome 56開始,對未進行HTTPS加密的網址鏈接亮出風險提示,即在地址欄的顯著位置提醒用戶“此網頁不安全" 。
騰訊微信小程序的官方需求文檔要求后臺使用HTTPS請求進行網絡通信,不滿足條件的域名和協議無法請求。
我們在瀏覽器中輸人一一個URL,回車之后便會在瀏覽器中觀察到頁面內容。實際上,這個過程是
瀏覽器向網站所在的服務器發送了一個請求,網站服務器接收到這個請求后進行處理和解析,然后返回對應的響應,接著傳回給瀏覽器。響應里包含了頁面的源代碼等內容,瀏覽器再對其進行解析,便將網頁呈現了出來。
此處客戶端即代表我們自己的PC或手機瀏覽器,服務器即要訪問的網站所在的服務器。
請求,由客戶端向服務端發出,可以分為4部分內容:請求方法( Request Method)、請求的網址
( Request URL )、請求頭( Request Headers )、請求體( Request Body )。
請求方法
常見的請求方法有兩種: GET和POST。
在瀏覽器中直接輸入URL并回車,這便發起了一個GET請求,請求的參數會直接包含到URL里。例如,在百度中搜索Python,這就是一一個GET請求,鏈接為htps://www baidu. com/,其中URL中包含了請求的參數信息,這里參數wd表示要搜尋的關鍵字。POST 請求大多在表單提交時發起。比如,對于一個登錄表單,輸人用戶名和密碼后,點擊“登錄”按鈕,這通常會發起一個 POST請求,其數據通常以表單的形式傳輸,而不會體現在URL中。
GET和POST請求方法有如下區別:
GET請求中的參數包含在URL里面,數據可以在URL中看到,而POST請求的URL不會包含這些數據,數據都是通過表單形式傳輸的,會包含在請求體中。
GET請求提交的數據最多只有1024字節,而POST方式沒有限制。
一般來說,登錄時,需要提交用戶名和密碼,其中包含了敏感信息,使用GET方式請求的話,密碼就會暴露在URL里面,造成密碼泄露,所以這里最好以POST方式發送。上傳文件時,由于文件內容比較大,也會選用POST方式。
我們平常遇到的絕大部分請求都是GET或POST請求,另外還有一些請求方法, 如GET、HEAD、
POST、PUT、 DELETE、OPTIONS、CONNECT、TRACE等。
請求的網址
請求的網址,即統一資源定 位符URL,它可以唯一確定 我們想請求的資源。
請求頭
請求頭,用來說明服務器要使用的附加信息,比較重要的信息有Cookie . Referer. User-Agent等。
請求體
請求體一般承載的內容是 POST請求中的表單數據,而對于GET請求,請求體則為空。
響應,由服務端返回給客戶端,可以分為三部分:響應狀態碼( Response Status Code).響應頭( Response Headers )和響應體( Response Body )。
響應狀態碼
響應狀態碼表示服務器的響應狀態,如200代表服務器正常響應,404代表頁面未找到,500代表 服務器內部發生錯誤。在爬蟲中,我們可以根據狀態碼來判斷服務器響應狀態,如狀態碼為200,則 證明成功返回數據,再進行進一步的處理, 否則直接忽略。
響應頭
響應頭包含了服務器對請求的應答信息,如Content-Type、Server、 Set-Cookie 等。
響應體
最重要的當屬響應體的內容了。響應的正文數據都在響應體中,比如請求網頁時,它的響應體 就是網頁的HTML代碼;請求- -張圖片時 ,它的響應體就是圖片的二進制數據。我們做爬蟲請 求網頁后,要解析的內容就是響應體.
以上就是“Python網絡爬蟲之HTTP原理是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。