前言
簡單來說網際網路是由乙個個站點和網路裝置組成的大網,我們通過瀏覽器訪問站點,站點把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,可以用正規表示式,頁面...