Python爬蟲原理

2021-10-08 04:15:22 字數 2345 閱讀 7321

前言

簡單來說網際網路是由乙個個站點和網路裝置組成的大網,我們通過瀏覽器訪問站點,站點把html、js、css**返回給瀏覽器,這些**經過瀏覽器解析、渲染,將豐富多彩的網頁呈現我們眼前;

一、爬蟲是什麼?

如果我們把網際網路比作一張大的蜘蛛網,資料便是存放於蜘蛛網的各個節點,而爬蟲就是乙隻小蜘蛛,

二、爬蟲的基本流程:

使用者獲取網路資料的方式:

方式2:模擬瀏覽器傳送請求(獲取網頁**)->提取有用的資料->存放於資料庫或檔案中

爬蟲要做的就是方式2;

1、發起請求

使用http庫向目標站點發起請求,即傳送乙個request

request包含:請求頭、請求體等

request模組缺陷:不能執行js 和css **

2、獲取響應內容

如果伺服器能正常響應,則會得到乙個response

3、解析內容

解析html資料:正規表示式(re模組),第三方解析庫如beautifulsoup,pyquery等

解析json資料:json模組

解析二進位制資料:以wb的方式寫入檔案

4、儲存資料

資料庫(mysql,mongdb、redis)

檔案三、http協議 請求與響應

request:使用者將自己的資訊通過瀏覽器(socket client)傳送給伺服器(socket server)

ps:瀏覽器在接收response後,會解析其內容來顯示給使用者,而爬蟲程式在模擬瀏覽器傳送請求然後接收response後,是要提取其中的有用資料。

四、 request

1、請求方式:

常見的請求方式:get / post

2、請求的url

url編碼

會被編碼(看示例**)

網頁的載入過程是:

載入乙個網頁,通常都是先載入document文件,

3、請求頭

user-agent:請求頭中如果沒有user-agent客戶端配置,服務端可能將你當做乙個非法使用者host;

cookies:cookie用來儲存登入資訊

注意: 一般做爬蟲都會加上請求頭

請求頭需要注意的引數:

(2)user-agent:訪問的瀏覽器(要加上否則會被當成爬蟲程式)

(3)cookie:請求頭注意攜帶

4、請求體

請求體如果是get方式,請求體沒有內容 (get請求的請求體放在 url後面引數中,直接能看到)

如果是post方式,請求體是format data

ps:

1、登入視窗,檔案上傳等,資訊都會被附加到請求體內

2、登入,輸入錯誤的使用者名稱密碼,然後提交,就可以看到post,正確登入後頁面通常會跳轉,無法捕捉到post

五、 響應response

1、響應狀態碼

200:代表成功

301:代表跳轉

404:檔案不存在

403:無許可權訪問

502:伺服器錯誤

2、respone header

響應頭需要注意的引數:

(1)set-cookie:bdsvrtm=0; path=/:可能有多個,是來告訴瀏覽器,把cookie儲存下來

(2)content-location:服務端響應頭中包含location返回瀏覽器之後,瀏覽器就會重新訪問另乙個頁面

3、preview就是網頁源**

jso資料

如網頁html,

二進位制資料等

六、總結

1、總結爬蟲流程:

爬取—>解析—>儲存

2、爬蟲所需工具:

請求庫:requests,selenium(可以驅動瀏覽器解析渲染css和js,但有效能劣勢(有用沒用 的網頁都會載入);)

解析庫:正則,beautifulsoup,pyquery

儲存庫:檔案,mysql,mongodb,redis

python爬蟲開發

python資料分析

Python爬蟲原理

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

Python 爬蟲原理

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

Python爬蟲 二 爬蟲原理

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