1. 程式人生 > >爬蟲的概念和作用

爬蟲的概念和作用

編程 web dddddd cells 發送 http 做出 超鏈接 http協議

目錄

01 爬蟲的概念

02 爬蟲的流程

03 HTTP協議

04 WEBSOCKET

  • 爬蟲的概念

爬蟲的概念

爬蟲更官方點的名字叫數據采集,英文一般稱作spider,就是通過編程來全自動的從互聯網上采集數據。 比如說搜索引擎就是一種爬蟲。 爬蟲需要做的就是模擬正常的網絡請求,比如你在網站上點擊一個網址,就是一次網絡請求。

爬蟲的作用

現如今大數據時代已經到來,網絡爬蟲技術成為這個時代不可或缺的一部分,企業需要數據來分析用戶行為,來分析自己產品的不足之處,來分析競爭對手的信息等等,但是這些的首要條件就是數據的采集。 這其中使用爬蟲較為有名的有今日頭條等公司。

  • 爬蟲的流程

爬蟲的本質

爬蟲的本質就是自動化的去模擬正常人類發起的網絡請求,然後獲取網絡請求所返回的數據。 跟我們人手動去點擊一個連接,訪問一個網頁獲取數據,並沒有什麽本質的區別。

爬蟲的難點

爬蟲的難點主要為兩個方向: 數據的獲取 一般來說我們想要抓取的網站是不希望我們去抓取他的數據的,那麽這些網站就會做一些反爬蟲的措施,來讓我們無法去他的網站上抓取數據。所以我們也要做相應的措施去繞過這些反爬蟲措施。 抓取數據的速度 我們抓取的目標的數據量,有時是非常龐大的,甚至幾千萬上億的數據量,而有些甚至會要求實時的更新,所以抓取的速度也非常重要。我們一般會使用並發和分布式來解決速度的問題。

  • 網絡請求

網絡請求其實就是在互聯網上一次數據的傳遞。 而為了數據能夠在龐雜的網絡中能夠正確,迅速的傳遞給目標主機。我們定義了許多的網絡協議,也就是網絡傳輸數據的規則,來實現網絡的連接。 而這些協議中,我們使用的最多的,基本上就是HTTP/HTTPS協議。

HTTP協議報頭

重點是:User-Agent,Referer

HTTP請求方法

基本是使用的是GET和POST

狀態碼

200 請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
302 請求的資源現在臨時從不同的 URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址發送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可緩存的。   新的臨時性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,否則響應的實體中應當包含指向新的 URI 的超鏈接及簡短說明。   如果這不是一個 GET 或者 HEAD 請求,那麽瀏覽器禁止自動進行重定向,除非得到用戶的確認,因為請求的條件可能因此發生變化。   註意:雖然RFC 1945和RFC 2068規範不允許客戶端在重定向時改變請求的方法,但是很多現存的瀏覽器將302響應視作為303響
404 請求失敗,請求所希望得到的資源未被在服務器上發現。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如服務器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。404這個狀態碼被廣泛應用於當服務器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。

Cookie和Session

cookie數據存放在客戶的瀏覽器上,session數據放在服務器上

HTTPS和WebSocket協議

HTTP協議的缺點

HTTP協議最大的缺點就是明文傳輸,而在網絡上數據傳輸的路徑上有很大一部分都是暴露在公有環境下的,所以數據是很容易泄露。

HTTPS協議

因為HTTP的這個缺點,所以就出現了基於SSL或者TSL的HTTPS協議。

在HTTPS請求發起之前,客戶端會首先向服務端發起請求,獲取證書。HTTPS傳輸的數據是經過證書加密以後的數據,這就避免了數據泄露的風險。

HTTPS保證了安全性的同時,也降低了傳輸的速度,協議的速度比HTTP慢大概2-100倍。

WebSocket協議

WebSocket是HTML5開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。

由於HTTP 協議是一種無狀態的、無連接的、單向的應用層協議。它采用了請求/響應模型。通信請求只能由客戶端發起,服務端對請求做出應答處理。

這種通信模型有一個弊端:HTTP 協議無法實現服務器主動向客戶端發起消息。

這種單向請求的特點,註定了如果服務器有連續的狀態變化,客戶端要獲知就非常麻煩。大多數 Web 應用程序將通過頻繁請求實現長輪詢。輪詢的效率低,非常浪費資源(因為必須不停連接,或者 HTTP 連接始終打開)。

在WebSocket API中,瀏覽器和服務器只需要做一個握手的動作,然後,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。

瀏覽器通過 JavaScript 向服務器發出建立 WebSocket 連接的請求,連接建立以後,客戶端和服務器端就可以通過 TCP 連接直接交換數據。

由於websocket出現的時間較短,應用的範圍比較小,所以使用的較少。

爬蟲的概念和作用