1. 程式人生 > >爬蟲基礎 之(一) --- 初識爬蟲

爬蟲基礎 之(一) --- 初識爬蟲

ogl coo 忽略 限制 工作 請求 交互 google 獲取數據

爬蟲概念

(spider,網絡蜘蛛)通過互聯網上一個個的網絡節點,進行數據的提取、整合以及存儲

分類:

通用爬蟲(了解)

主要用於搜索引擎(百度、Google ,搜狗等)

搜索引擎的工作原理:

核心部分:通過爬蟲按照互聯網的拓撲結構,進行批量的數據抓取,然後進行數據清洗與整合,然後按照一定的次序存入百度的數據庫集群

檢索部分:實質上就是一個web系統,給用戶提供一個檢索平臺

搜索引擎獲取數據的方式:

1)通過通用爬蟲

2)主動的提交自己的網站

3)通過競價排名(信息排名:1、流量 2、競價)

4)搜索引擎和DNS的運營商合把一些有價值的網站收錄過來

robots協議:

robots協議不是技術層面的協議,只是一個君子協定;首先在爬取一個網站的時候,第一步就是訪問這個網站的robots.txt文件,在這個文件中規定了那些東西能爬哪些東西不能爬,爬蟲要嚴格遵守,只爬取允許的內容,不要去爬取不允許的內容,搜索引擎爬蟲一定遵守robots協議;我們寫的話可以不遵守。

聚焦爬蟲

根據客戶的需求,定制一些針對性比較強的爬蟲

工作原理:

1、數據提取(抓取)

  技術:http協議等應用層協議

  反爬:用戶代理、IP禁止、驗證碼、會話處理等

2、數據的分析

  遇到的數據:html、json、xml、js數據

  反爬:js動態加載、js加密、後臺加密等

3、數據的存儲

  CSV數據、json數據、關系型數據庫、非關系型數據庫

  爬蟲主要研究如何對付反爬

什麽是HTTP協議

1)是一個基於請求與響應的應用層協議,底層協議是TCP保證了整個傳輸過程的可靠性

2)通過url來進行客戶端與服務器的交互

  (url解釋:統一資源定位符,用於定位互聯網上資源的位置,格式,協議://主機名.域名:端口號/路徑名...?參數1=值1&參數2=值2&....#錨點)

3)是一種C/S(B/S是一種特殊的C/S結構)模式的協議,客戶端發起請求,服務端處理請求並響應

4)它是一種無狀態的協議,它通過cookie或者session來處理會話信息

http的過程

1)創建TCP鏈接:三次握手,

  客戶端首先向服務器發出一個是否同意創建連接的請求,

  然後服務根據自己的任務量決定是否創建,並且把是否創建連接的相關信號返回給客戶端,

  然後客戶端如果接到了同意創建連接的信號,就正式的發起一個創建連接的信號,並且帶上http協議的報文。

通過三次握手客戶端和服務器之間建立齊了一條數據通路,就可以保證HTTP協議的可靠傳輸

2)客戶端向服務器發起HTTP請求:通過url把參數以及請求頭信息傳遞給服務器,常見的請求方式有4中,常用的是get和post

  請求頭:包含了本次請求的相關配置信息(比如:主機、cookie、數據格式等),決定了客戶端和服務之間數據交流的方式與格式

  請求體:就是參數,也即是客戶端要想服務器提交的數據

3)服務器處理請求,並且把數據響應出去

4)判斷數據是否傳輸結束,如果結束,四次揮手斷開TCP鏈接

get請求和post請求的區別

get請求參數拼接在url後面的,post請求參數不體現在url中(一般直接通過表單提交);

get請求數據量有限制(不同的瀏覽器對url的長度都有不同的限制),post請求是沒有限制的

狀態碼

 1 100:繼續 客戶端應當繼續發送請求。客戶端應當繼續發送請求的剩余部分,或者如果請求已經完成,忽略這個響應。
 2 
 3 101:轉換協議 在發送完這個響應最後的空行後,服務器將會切換到在Upgrade 消息頭中定義的那些協議。只有在切換新的協議更有好處的時候才應該采取類似措施。
 4 
 5 102:繼續處理 由WebDAV(RFC 2518)擴展的狀態碼,代表處理將被繼續執行。
 6 
 7 200:請求成功 處理方式:獲得響應的內容,進行處理
 8 
 9 201:請求完成,結果是創建了新資源。新創建資源的URI可在響應的實體中得到 處理方式:爬蟲中不會遇到
10 
11 202:請求被接受,但處理尚未完成 處理方式:阻塞等待
12 
13 204:服務器端已經實現了請求,但是沒有返回新的信 息。如果客戶是用戶代理,則無須為此更新自身的文檔視圖。 處理方式:丟棄
14 
15 300:該狀態碼不被HTTP/1.0的應用程序直接使用, 只是作為3XX類型回應的默認解釋。存在多個可用的被請求資源。 處理方式:若程序中能夠處理,則進行進一步處理,如果程序中不能處理,則丟棄
16 301:請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源 處理方式:重定向到分配的URL
17 
18 302:請求到的資源在一個不同的URL處臨時保存 處理方式:重定向到臨時的URL
19 
20 304:請求的資源未更新 處理方式:丟棄,使用本地緩存文件
21 
22 400:非法請求 處理方式:丟棄
23 
24 401:未授權 處理方式:丟棄
25 
26 403:禁止 處理方式:丟棄
27 
28 404:沒有找到 處理方式:丟棄
29 
30 500:服務器內部錯誤 服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器端的源代碼出現錯誤時出現。
31 
32 501:服務器無法識別 服務器不支持當前請求所需要的某個功能。當服務器無法識別請求的方法,並且無法支持其對任何資源的請求。
33 
34 502:錯誤網關 作為網關或者代理工作的服務器嘗試執行請求時,從上遊服務器接收到無效的響應。
35 
36 503:服務出錯 由於臨時的服務器維護或者過載,服務器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以後恢復。

爬蟲基礎 之(一) --- 初識爬蟲