【Python爬蟲學習筆記1】網絡協議及請求基礎

http協議與https協議

HTTP協議(全稱為HyperText Transfer Protocol,超文本傳輸協議),是發布和接收HTML頁面的方法,其服務端口號為80。

HTTPS協議為HTTP協議的加密版本,其在HTTP下加入了SSL層,服務端口號為443。

URL結構解析

URL(Uniform Resource Locator,統一資源定位符),用于從互聯網上獲取某個資源,其組成格式如下:scheme://host:port/path/?query-string=xxx#anchor

scheme:代表訪問協議類型,如http、https和ftp等。

host:域名,比如 “cn.bing.com”。

port:端口號,訪問一個網站時瀏覽器默認使用80端口。

path:查找路徑,比如 “https://www.imooc.com/course/list”,后面的course/list就是path。

query-string:查詢字符串,比如 “https://cn.bing.com/search?q=python”,后面的q=python就是查詢字符串。

anchor:錨點,用于頁面定位。

瀏覽器請求一個url,瀏覽器會對url進行編碼——除英文字母,數字和部分符號外,其他的全部使用百分號與十六進制碼值進行編碼。如在Chrome中地址欄輸入“https://cn.bing.com/search?q=博客園”,則會自動解析為“https://cn.bing.com/search?q=%E5%8D%9A%E5%AE%A2%E5%9B%AD”

http請求發送過程

首先,用戶在瀏覽器地址欄中輸入URL并回車后瀏覽器會向HTTP服務器發送一個Request請求,服務器接收到請求后會返回一個Response文件對象給瀏覽器。此后瀏覽器分析Response中的HTML,同時發現其中所引用的其他文件(如Image、Js、CSS等),瀏覽器再次向服務器發送這些文件的request請求以下載文件。當所有文件成功下載完畢后,瀏覽器便可以將網頁完整地構造顯示出來。

如下為訪問微軟Bing主頁的請求:

image_thumb[3]

請求方法

在HTTP協議中,定義了八種請求方法(參見下表)

?? 方法????????????????????????????????????????????? 描述
GET請求頁面,并返回頁面內容

HEAD

類似于GET請求,只不過返回的響應zho那個沒有具體的內容,用于獲取報頭
POST大多用于提交表單或上傳文件,數據包含在請求體中
PUT從客戶端向服務器傳送的數據取代指定文檔中的內容
DELETE請求服務器刪除指定的頁面
CONNECT把服務器當作跳板,讓服務器代替客戶端訪問其他網頁
OPTIONS允許客戶端查看服務器的性能
TRACE回顯服務器收到的請求,主要用于測試或診斷

其中,GET與POST請求較為常用。一般情況下,GET僅用于獲取數據,POST用于上傳數據,但有時為應對反爬機制,需要用POST請求代替GET請求。

常用請求頭參數

在HTTP協議中,請求頭用來說明要傳遞給服務器使用的附加信息,如下為訪問拉勾網的請求頭。

image_thumb[6]

其中較為重要的參數有User-Agent、Referer 和 Cookie。

User-Agent:一個特殊字符串頭,可以使服務器識別客戶使用的操作系統及版本、瀏覽器及版本等信息。在爬蟲中可以設置此信息來偽裝瀏覽器以反-反爬蟲。

Referer:用于標識請求是從哪個頁面來的。這個一般也可以用來做反爬蟲技術——只有從指定頁面請求才給予響應。

Cookie:HTTP協議無狀態的,即服務器在兩次連續的請求中不會保存是哪個用戶發送的請求,而為了維持前后會話完整性,可以在發送請求時通過附加存儲在用戶本地的Cookie來讓服務器識別出用戶并查出當前狀態。

響應

響應,由服務器返回給客戶端,其中包括三部分內容——響應狀態碼、響應頭和響應體。

1.響應狀態碼

用于表示服務器的相應狀態,常用狀態碼有200(成功,服務器正常返回數據)、 301(永久重定向) 、302(臨時重定向)、400(請求錯誤,服務器無法解析該請求)、403(禁止訪問,服務器拒絕此請求)、404(未找到,服務器找不到請求的頁面)、500(服務器內部錯誤)。

2.響應頭

包含一些服務器對請求的應答信息,如Content-Type(應答的文檔類型,如text/html返回HTML文檔、image/jpeg返回圖片)、Server(服務器信息,如名稱、版本號等)、Set-Cookie(設置Cookies)、Expires(指定響應的過期時間)等。

如拉勾網響應頭信息:

image_thumb[11]

3.響應體

表示響應的正文數據,如網頁的HTML代碼、圖片的二進制數據等。爬蟲請求網頁后要解析的內容就是響應體內容。

轉載于:https://www.cnblogs.com/Unikfox/p/9649149.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253495.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253495.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253495.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

快速上手SpyGlass——基本流程

SpyGlass,這是一個很強大的RTL驗證級工具。它不僅僅能檢查sdc的錯誤,還能做以下各種檢查:Low Power, DFT,CDC(Cross Domain Check)。 一、基本概念 1、方法學相關 Rule: 是SpyGlass 進行RTL分析的最小單…

NAND FLASH ECC

NAND需要ECC以確保數據完整性。NAND閃存的每一個頁面上都包括額外的存儲空間,它就是64個字節的空閑區(每512字節的扇區有16字節)。該區能存儲ECC代碼及其它像磨損評級或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執行,但是,硬件執行有…

快速上手SpyGlass——CDC檢查

隨著技術的發展,數字電路的集成度越來越高,設計也越來越復雜。很少有系統會只工作在同一個時鐘頻率。一個系統中往往會存在多個時鐘,這些時鐘之間有可能是同步的,也有可能是異步的。如果一個系統中,異步時鐘之間存在信…

laravel session redis 設置

Laravel 在使用 Redis 作為 Session 驅動之前, 需要通過 Composer 安裝 predis/predis 擴展包 (~1.0)。 當然也可以用原生自帶的,具體使用見 https://laravel-china.org/docs/laravel/5.6/redis/1402#phpredis 操作即可。 然后在database 配置文件中配置…

數字后端——低功耗單元庫

在之前的文章中,介紹了低功耗設計物理實施的方案: 數字后端——低功耗設計物理實施_滄海一升的博客-CSDN博客_低功耗設計低功耗設計方案所涉及到的物理實施相關內容https://blog.csdn.net/qq_21842097/article/details/119918312 為了實現例如門…

【CUDA開發】CUDA面內存拷貝用法總結

【CUDA開發】CUDA面內存拷貝用法總結 標簽(空格分隔): 【CUDA開發】 主要是在調試CUDA硬解碼并用D3D9或者D3D11顯示的時候遇到了一些代碼,如下所示: CUdeviceptr g_pRgba 0; CUDA_MEMCPY2D memcpy2D { 0 }; memcp…

PerfMon常用計數器

摘要: 故事來源于《sql server2012 深入解析和性能分析》 1.重要的PerfMon CPU計數器 計數器查看內容發生問題的條件Processor%Processor TimeCPU為生產環境的請求提供服務消耗的時間占總CPU時間的百分比>80%Processor%Privilege Time  CPU為內核模式請求提供服務消耗的時…

NandFlash詳述

1. 硬件特性: 【Flash的硬件實現機制】 Flash全名叫做Flash Memory,屬于非易失性存儲設備(Non-volatile Memory Device),與此相對應的是易失性存儲設備(Volatile Memory Device)。這類設備,除了Flash,還有其他比較常見…

史上最全的MySQL高性能優化實戰總結!

1.1 前言 MySQL對于很多Linux從業者而言,是一個非常棘手的問題,多數情況都是因為對數據庫出現問題的情況和處理思路不清晰。在進行MySQL的優化之前必須要了解的就是MySQL的查詢過程,很多的查詢優化工作實際上就是遵循一些原則讓MySQL的優化器…

低功耗設計——基于UPF進行設計

UPF, 統一電源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的電源格式,是一組標準的類Tcl 語言的集合,用來描述芯片設計中的低功耗意圖(Low-Power Design Intent)。 使用UPF 的語言,可以描述供電…

用公眾號獲取 任意公眾號文章列表 軟件還是免費

用公眾號獲取 任意公眾號文章列表 軟件還是免費還不快點下載 下載 地址 https://pan.baidu.com/s/1jI44Wjs轉載于:https://www.cnblogs.com/wx85437898/p/7488590.html

CentOS7時間設置問題

本地安裝一個VMWare player虛擬機客戶端,并安裝了Linux CentOS7 Basic Web Server系統,時區在安裝時已經選擇了Asia/Shanghai,但是安裝完成后,時間和當前外部的時間不一致,如下圖 圖一 圖二 圖三 后經搜索發現,由于未開…

關于Nand ECC 錯誤

Nand flash ECC數據錯誤怎么辦? 我編譯過kernel 當時選了ECC校驗 啟動以后報錯 去掉了,就不報錯了 所以我會先考慮是不是這個問題 一般來說,硬件ECC校驗出錯可能性比較小吧? 我啥也不懂 -----摘自網絡經典文章:“LINU…

低功耗設計——功耗估算

根據在功耗分析的過程中是否有輸入向量的提供,功耗估算方法可以分為仿真的方法(Simulative)和非仿真的方法(Non-simulative): 仿真的方法是根據用戶所提供的大量輸入向量來對電路進行模擬,利用…

uboot 與系統內核中 MTD分區的關系

分類: Nand 驅動 2011-11-06 23:48 705人閱讀 評論(2) 收藏 舉報 uboot 與系統內核中 MTD分區的關系: 分區只是內核的概念,就是說A~B地址放內核,C~D地址放文件系統,等等。 1:在內核…

Deep Learning(深度學習)學習筆記整理系列三

Deep Learning(深度學習)學習筆記整理系列 聲明: 1)該Deep Learning的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本聲明也參考原文獻。 2)本文僅供學術交流&…

輾轉相除法 求最大公約數和最小公倍數

# include<stdio.h> int main() { int a,b,c,x,y; printf("請輸入兩個正整數&#xff0c;用逗號間隔&#xff1a;"); scanf("%d,%d",&a,&b); xa; yb; if (a<b) { ca; ab;      //要保證 a>b bc; } while (b!0) { ca; ab; bc%b; …

Conformal ECO 流程介紹

之前聽說過一句話&#xff0c;沒有修過ECO的人生是不完整的。最近就給我整得再次完整了。。。。。。 最近趕項目&#xff0c;RTL freeze之后&#xff0c;后仿發現出了bug&#xff08;還好攔下來了&#xff0c;不然頭更大&#xff09;&#xff0c;于是做了一次function ECO&…

最新天貓面試題(含總結):線程池+并發編程+分布式設計+中間件

最新天貓面試題&#xff08;含總結&#xff09;&#xff1a;線程池并發編程分布式設計中間件https://my.oschina.net/u/3892...

關于NAND flash的MTD分區與uboot中分區的理解 .

今天做內核移植&#xff0c;準備添加NAND flash的驅動&#xff0c;做到MTD分區時&#xff0c;想起在一本書上看到的一句話&#xff0c;說的是分區時每個區之間沒有間隙&#xff0c;前一個區的結束地址是后一個區的起始地址。可是當我看我的開發板的教程時&#xff0c;分區如下&…