Python爬蟲之基本原理

NO IMAGE

爬蟲簡介

網路爬蟲(Web crawler),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼,它們被廣泛用於網際網路搜尋引擎或其他類似網站,可以自動採集所有其能夠訪問到的頁面內容,以獲取或更新這些網站的內容和檢索方式。從功能上來講,爬蟲一般分為資料採集,處理,儲存三個部分。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入佇列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為複雜,需要根據一定的網頁分析演算法過濾與主題無關的連結,保留有用的連結並將其放入等待抓取的URL佇列。然後,它將根據一定的搜尋策略從佇列中選擇下一步要抓取的網頁URL,並重覆上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。

爬蟲原理

Web網路爬蟲系統的功能是下載網頁資料,為搜尋引擎系統提供資料來源。很多大型的網路搜尋引擎系統都被稱為基於 Web資料採集的搜尋引擎系統,比如 Google、Baidu。由此可見Web 網路爬蟲系統在搜尋引擎中的重要性。網頁中除了包含供使用者閱讀的文字資訊外,還包含一些超連結資訊。Web網路爬蟲系統正是通過網頁中的超連線資訊不斷獲得網路上的其它網頁。正是因為這種採集過程像一個爬蟲或者蜘蛛在網路上漫遊,所以它才被稱為網路爬蟲系統或者網路蜘蛛系統,在英文中稱為Spider或者Crawler

爬蟲基本流程

  1. 發起請求:通過HTTP庫向目標站點發起請求,即傳送一個Request,請求可以包含額外的headers等資訊,等待伺服器響應。

  2. 獲取響應內容:如果伺服器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,型別可能有HTML,Json字串,二進位制資料(如圖片視訊)等型別。

  3. 解析內容:得到的內容可能是HTML,可以用正規表示式、網頁解析庫進行解析。可能是Json,可以直接轉為Json物件解析,可能是二進位制資料,可以做儲存或者進一步的處理。

  4. 儲存資料:儲存形式多樣,可以存為文字,也可以儲存至資料庫,或者儲存特定格式的檔案。

Request和Response

Request:瀏覽器就傳送訊息給該網址所在的伺服器,這個過程叫做HTTP Request。

Response:伺服器收到瀏覽器傳送的訊息後,能夠根據瀏覽器傳送訊息的內容,做相應處理,然後把訊息回傳給瀏覽器。這個過程叫做HTTP Response。瀏覽器收到伺服器的Response資訊後,會對資訊進行相應處理,然後展示。

Request詳解

請求方式:主要有GET、POST兩種型別,另外還有HEAD、PUT、DELETE、OPTIONS等。

請求URL:URL全稱統一資源定位符,如一個網頁文件、一張圖片、一個視訊等都可以用URL唯一來確定。

請求頭:包含請求時的頭部資訊,如User-Agent、Host、Cookies等資訊。

請求體:請求時額外攜帶的資料如表單提交時的表單資料。

Response詳解

響應狀態:有多種響應狀態,如200代表成功、301跳轉、404找不到頁面、502伺服器錯誤。

響應頭:如內容型別、內容長度、伺服器資訊、設定Cookie等等。

響應體:最主要的部分,包含了請求資源的內容,如網頁HTML、圖片二進位制資料等。

能抓取哪些資料

網頁文字:如HTML文件、Json格式文字等。

圖片:獲取到的是二進位制檔案,儲存為圖片格式。

視訊:同為二進位制檔案,儲存為視訊格式即可。

And so on:只要是能請求到的,都能獲取。

解析方式

  1. 直接處理

  2. Json解析

  3. 正規表示式

  4. BeautifulSoup

  5. PyQuery

  6. XPath

抓取中出現的問題

問:為什麼我抓到的和瀏覽器看到的不一樣?

答:網頁通過瀏覽器的解析,載入CSS與JS等檔案對網頁進行解析渲染,達到我們看到絢麗的網頁,而我們抓到的檔案只是一些程式碼,css檔案無法呼叫,使得樣式不能表現出來,那麼網頁就會出現錯位等等問題。

問:怎樣解決JavaScript渲染的問題?

答:分析Ajax請求、Selenium/WebDriver、Splash、PyV8、Ghost.py等庫

儲存資料

文字:純文字、Json、Xml等。

關係型資料庫:如MySQL、Oracle、SQL Server等具有結構化表結構形式儲存。

非關係型資料庫:如MongoDB、Redis等Key-Value形式儲存。

二進位制檔案:如圖片、視訊、音訊等等直接儲存成特定格式即可。

∞∞∞∞∞

IT派 – {技術青年圈}持續關注網際網路、區塊鏈、人工智慧領域

公眾號回覆“Python”,

邀你加入{ IT派Python技術群 }