Python爬蟲 二 爬蟲原理

2021-09-30 18:25:41 字數 2838 閱讀 2564

爬蟲就是請求**並提取資料的自動化程式。其中請求,提取,自動化是爬蟲的關鍵!下面我們分析爬蟲的基本流程

發起請求

通過http庫向目標站點發起請求,也就是傳送乙個request,請求可以包含額外的header等資訊,等待伺服器響應

獲取響應內容解析內容

得到的內容可能是html,可以用正規表示式,頁面解析庫進行解析,可能是json,可以直接轉換為json物件解析,可能是二進位制資料,可以做儲存或者進一步的處理

儲存資料

儲存形式多樣,可以存為文字,也可以儲存到資料庫,或者儲存特定格式的檔案

瀏覽器傳送訊息給**所在的伺服器,這個過程就叫做htpp request

伺服器收到瀏覽器傳送的訊息後,能夠根據瀏覽器傳送訊息的內容,做相應的處理,然後把訊息回傳給瀏覽器,這個過程就是http response

瀏覽器收到伺服器的response資訊後,會對資訊進行相應的處理,然後展示

請求方式、請求位址、請求頭、請求體

請求方式

主要有:get/post兩種型別常用,另外還有head/put/delete/options

get和post的區別就是:

請求的資料get是在url中,post則是存放在頭部。

get:向指定的資源發出「顯示」請求。使用get方法應該只用在讀取資料,而不應當被用於產生「***」的操作中。

post:向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。這個請求可能會建立新的資源或修改現有資源,或二者皆有。(其實:在html標準中,是有著類似的定義。但這只是html標準對http協議的用法的約定。是因為有各種瀏覽器等軟體的實現,就變成了我們現在熟知的現象,get要用url傳參,post用body傳參。)

get請求在url中傳送的引數是有長度限制的,而post是沒有的。(其實:多數伺服器出於安全、穩定等多方面的考慮,會給url長度加限制。但是這個限制是針對所有http請求的,與get、post沒有關係。)

get產生乙個tcp資料報;post產生兩個tcp資料報。

對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);

對於post,瀏覽器先傳送header,伺服器響應100(continue),然後再傳送data,伺服器響應200(返回資料);

head:與get方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部分。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中「關於該資源的資訊」(元資訊或稱元資料)。

options:這個方法可使伺服器傳回該資源所支援的所有http請求方法。用'*'來代替資源名稱,向web伺服器傳送options請求,可以測試伺服器功能是否正常運作。

delete:請求伺服器刪除request-uri所標識的資源。

請求url

url,即統一資源定位符,也就是我們說的**,統一資源定位符是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的位址。網際網路上的每個檔案都有乙個唯一的url,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。

url的格式由三個部分組成:

第一部分是協議(或稱為服務方式)。

第二部分是存有該資源的主機ip位址(有時也包括埠號)。

第三部分是主機資源的具體位址,如目錄和檔名等。

爬蟲爬取資料時必須要有乙個目標的url才可以獲取資料,因此,它是爬蟲獲取資料的基本依據。

請求頭

請求體

請求是攜帶的資料,如提交表單資料時候的表單資料(post)

狀態行、響應頭、響應體

所有http響應的第一行都是狀態行,依次是當前http版本號,3位數字組成的狀態**,以及描述狀態的短語,彼此由空格分隔。

響應狀態

有多種響應狀態,如:200代表成功,301跳轉,403forbidden,404找不到頁面,500伺服器錯誤

響應頭

如內容型別,型別的長度,伺服器資訊,設定cookie,如下圖

響應體

最主要的部分,包含請求資源的內容,如網頁html,,二進位制資料等。

網頁文字:如html文件,json格式化文字等

其他:只要請求到的,都可以獲取

直接處理

json解析

正規表示式處理

beautifulsoup解析處理

pyquery解析處理

xpath解析處理

出現這種情況是因為,很多**中的資料都是通過js,ajax動態載入的,所以直接通過get請求獲取的頁面和瀏覽器顯示的不同。

如何解決js渲染的問題?

分析ajax

selenium/webdriver

splash

pyv8,ghost.py

文字:純文字,json,xml,excel,csv等

關係型資料庫:如mysql,oracle,sql server等結構化資料庫

非關係型資料庫:mongodb,redis等key-value形式儲存

python爬蟲筆記(二)爬蟲原理

瀏覽器f12的html 中的資訊就是爬取的目標 瀏覽器傳送訊息 請求 到伺服器,這個過程叫http request 伺服器返回瀏覽器資訊,http response 瀏覽器處理資訊,展示 request 常用請求方式 get post,post請求需要構造表單進行請求,資料不會暴露在url中 url...

python之爬蟲(二)爬蟲的原理

在上文中我們說了 爬蟲就是請求 並提取資料的自動化程式。其中請求,提取,自動化是爬蟲的關鍵!下面我們分析爬蟲的基本流程 發起請求 通過http庫向目標站點發起請求,也就是傳送乙個request,請求可以包含額外的header等資訊,等待伺服器響應 獲取響應內容解析內容 得到的內容可能是html,可以...

Python爬蟲原理

簡單來說網際網路是由乙個個站點和網路裝置組成的大網,我們通過瀏覽器訪問站點,站點把html js css 返回給瀏覽器,這些 經過瀏覽器解析 渲染,將豐富多彩的網頁呈現我們眼前 如果我們把網際網路比作一張大的蜘蛛網,資料便是存放於蜘蛛網的各個節點,而爬蟲就是乙隻小蜘蛛,使用者獲取網路資料的方式 方式...