1. 爬蟲簡介
1.1 爬蟲是什麼?
什麼是爬蟲,如下是百度百科上的解析:html
不少人都將互聯網比喻成一張很是大的網,將世界鏈接起來。若是說互聯網是一張網,那麼爬蟲就像在網上爬的小蟲子,經過網頁的連接地址來尋找網頁,經過特定的搜索算法來肯定路線,一般從網站的某一個頁面開始,讀取該網頁的內容,找到該網頁中的其餘連接地址,而後經過這些連接地址尋找下一個網頁,就這樣一直循環下去,直到將該網站的全部網頁所有抓取爲止。 正則表達式
1.2 爬蟲原理
發起請求:
使用http庫向目標站點發起請求,即發送一個Request
Request包含:請求頭、請求體等算法
接收響應:
若是服務器能正常響應,則會獲得一個Response
Response包含:html,json,圖片,視頻等數據庫
解析網頁:
解析html數據:正則表達式,第三方解析庫如Beautifulsoup,pyquery等
解析json數據:json模塊
解析二進制數據:以b的方式寫入文件json
存儲資源:
數據庫瀏覽器
1.3 發送請求
爬蟲的第一個步驟就是對起始 URL 發送請求,以獲取其返回的響應服務器
值得注意的是,發送請求實質上是指發送請求報文的過程網絡
請求報文包括如下四個方面:請求行、請求頭、空行和請求體。post
(1)請求行
請求行由請求方法、請求 URL 和 HTTP 協議版本 3 個字段組成,字段間使用空格分隔網站
請求方法:請求方法是指對目標資源的操做方式,常見的有 GET 方法和 POST 方法
GET:從指定的資源請求數據,查詢字符串包含在 URL 中發送
POST:向指定的資源提交要被處理的數據,查詢字符串包含在請求體中發送
請求 URL:請求 URL 是指目標網站的統一資源定位符 (Uniform Resource Locator,URL)
HTTP 協議版本:HTTP 協議是指通訊雙方在通訊流程和內容格式上共同遵照的標準
(2)請求頭
請求頭被認爲是請求的配置信息,如下列舉出經常使用的請求頭信息
User-Agent:包含發出請求的用戶的信息,設置 User-Agent 經常使用於處理反爬蟲
Cookie:包含先前請求的內容,設置 Cookie 經常使用於模擬登錄
Referer:指示請求的來源,用於能夠防止鏈盜以及惡意請求
(3)空行
空行標誌着請求頭的結束
(4)請求體
請求體根據不一樣的請求方法包含不一樣的內容
若是是get方式,請求體沒有內容
若是是post方式,請求體是format data
1.4 接收響應
爬蟲的第二個步驟就是獲取特定 URL 返回的響應,以提取包含在其中的數據。
一樣的,響應實際上是指完整響應報文,它包括四個部分:響應行、響應頭、空行和響應體。
(1)響應行
響應行由 HTTP 協議版本、狀態碼及其描述組成。
HTTP 協議版本:HTTP 協議是指通訊雙方在通訊流程和內容格式上共同遵照的標準。
狀態碼及其描述:
100~199:信息,服務器收到請求,須要請求者繼續執行操做
200~299:成功,操做被成功接收並處理
300~399:重定向,須要進一步的操做以完成請求
400~499:客戶端錯誤,請求包含語法錯誤或沒法完成請求
500~599:服務器錯誤,服務器在處理請求的過程當中發生錯誤
(2)響應頭
響應頭用於描述服務器和數據的基本信息,如下列舉出經常使用的響應頭信息
Set-Cookie:設置瀏覽器 Cookie,之後當瀏覽器訪問符合條件的 URL 時,會自動帶上該 Cooike
(3)空行
空行標誌着響應頭的結束。
(4)響應體
響應體就是網站返回的數據,在下一個步驟中咱們須要對其進行分析處理。
1.5 解析網頁
解析網頁實質上須要完成兩件事情,一是提取網頁上的連接,二是提取網頁上的資源。
(1)提取連接
提取連接實質上是指獲取存在於待解析網頁上的其餘網頁的連接。
網絡爬蟲須要給這些連接發送請求,如此循環,直至把特定網站所有抓取完畢爲止。
(2)提取資源
提取數據則是爬蟲的目的,常見的數據類型以下:
文本:HTML,JSON 等
圖片:JPG,GIF,PNG 等
視頻:MPEG-一、MPEG-2 和 MPEG4,AVI 等
最終,咱們能夠對所得到的資源做進一步的處理,從而提取出有價值的信息。