[爬蟲手記] 我是如何在3分鐘內開發完一個爬蟲的

前言

開發爬蟲是一件有趣的事情。寫一個程序,對感興趣的目標網站發起HTTP請求,獲取HTML,解析HTML,提取數據,將數據保存到數據庫或者存爲CSV、JSON等格式,再用自己熟悉的語言例如Python對這些數據進行分析生成酷炫的圖表。這個過程是不是很興奮?

然而,開發爬蟲並不是一件簡單的事情。通常開發一個簡單爬蟲往往需要編寫好幾個模塊:下載器、解析器、提取規則、保存模塊。實現這個簡單爬蟲用Python實現至少需要編寫10-20行代碼,而且如果考慮併發和調度的話,通常要編寫50行代碼以上。更麻煩的是,如果要管理多個爬蟲實現爬蟲的工程化,需要對各個網站的爬蟲代碼提取共用模塊和參數,這個過程需要相當的工程經驗和時間積累。其實,一般各大網站的結構大同小異,僅需要更改提取規則即可。很多爬蟲工程師要在大型項目中編寫成百上千的提取規則,對於沒有任何管理工具的人來說,這基本上是個噩夢。

可配置爬蟲

幸運的是,Crawlab版本v0.2.1中新增功能可配置爬蟲可以讓工程師從這些重複性工作中解放開來。Crawlab的可配置爬蟲只需要爬蟲工程師配置一些必要的CSS/XPath提取規則,就可以完成一個常規的爬蟲開發。根據作者實驗,對於CSS選擇器或XPath稍微熟悉點的工程師,用可配置爬蟲開發完一個包含五臟俱全的常規爬蟲只需要1-3分鐘。

Crawlab的可配置爬蟲是基於Scrapy的,因此天生是支持併發的。而且,可配置爬蟲完全支持Crawlab自定義爬蟲的一般功能的,因此也支持任務調度、任務監控、日誌監控、數據分析。

安裝運行Crawlab

Crawlab是一個專注於爬蟲的集成了爬蟲管理、任務調度、任務監控、數據分析等模塊的分佈式爬蟲管理平臺,非常適合對爬蟲管理、爬蟲工程化有要求的開發者及企業。

關於Crawlab的詳細介紹請參考之前的文章:

以下是Crawlab的安裝和運行步驟,時間大概在10-20分鐘。

安裝步驟

運行步驟

如何開發並運行可配置爬蟲

下面總算到了爬蟲開發時間。這裏將以網易24小時排行新聞爲例,開發一個相應的可配置爬蟲,整個流程應該不超過3分鐘。

添加爬蟲

Crawlab跑起來之後,在瀏覽器中打開網址http://localhost:8080,導航到爬蟲。在點擊添加爬蟲按鈕。

爬蟲列表

點擊可配置爬蟲

爬蟲列表-添加爬蟲

輸入完基本信息,點擊添加

爬蟲列表-爬蟲信息

配置爬蟲

添加完成後,可以看到剛剛添加的可配置爬蟲出現了在最下方,點擊查看進入到爬蟲詳情

點擊配置標籤進入到配置頁面。接下來,我們需要對爬蟲規則進行配置。

這裏已經有一些配置好的初始輸入項。我們簡單介紹一下各自的含義。

抓取類別

這也是爬蟲抓取採用的策略,也就是爬蟲遍歷網頁是如何進行的。作爲第一個版本,我們有僅列表僅詳情頁列表+詳情頁

  • 僅列表頁。這也是最簡單的形式,爬蟲遍歷列表上的列表項,將數據抓取下來。
  • 僅詳情頁。爬蟲只抓取詳情頁。
  • 列表+詳情頁。爬蟲先遍歷列表頁,將列表項中的詳情頁地址提取出來並跟進抓取詳情頁。

這裏我們選擇列表+詳情頁

列表項選擇器 & 分頁選擇器

列表項的匹和分頁按鈕的匹配查詢,由CSS或XPath來進行匹配。

開始URL

爬蟲最開始遍歷的網址。

遵守Robots協議

這個默認是開啓的。如果開啓,爬蟲將先抓取網站的robots.txt並判斷頁面是否可抓;否則,不會對此進行驗證。用戶可以選擇將其關閉。請注意,任何無視Robots協議的行爲都有法律風險。

列表頁字段 & 詳情頁字段

這些都是再列表頁或詳情頁中需要提取的字段。字段由CSS選擇器或者XPath來匹配提取。可以選擇文本或者屬性。

在檢查完目標網頁的元素CSS選擇器之後,我們輸入列表項選擇器、開始URL、列表頁/詳情頁等信息。注意勾選url爲詳情頁URL。

點擊保存、預覽,查看預覽內容。

OK,現在配置大功告成,終於可開始跑爬蟲了!

運行爬蟲

你唯一需要做的,就是點擊運行按鈕並確認。點擊概覽標籤,你可以看到任務已經開始運行了。

點擊創建時間鏈接導航到任務詳情,點擊結果標籤,你就可以看到抓取到的結果已經保存下來了。

怎麼樣,這個過程是不是超級簡單?如果熟練的話,整個過程可以在60秒內完成!就跟玩魔方一樣,越玩越熟練!

結語

本文利用Crawlab的可配置爬蟲功能實現了3分鐘內對網易新聞24小時新聞排行榜的抓取。同樣的過程可以實現在其他類似的網站上面。雖然這是一個經典的“列表+詳情頁”的抓取模式,比較簡單,後續我們還會開發更多的更復雜的抓取模式,實現更多的抓取需求。Crawlab的可配置爬蟲降低了爬蟲的開發時間,增加了爬蟲開發效率,完善了工程化水平,將爬蟲工程師從日常的繁瑣配置工作中解放出來。配置工作可以交給初級爬蟲工程師或者外包人員來做,而高級爬蟲工程師會把精力放在更復雜的爬蟲工作上來,例如反爬、動態內容、分佈式爬蟲等等。

Github: tikazyq/crawlab

如果感覺Crawlab還不錯,對你的日常工作或企業有幫助的話,請加作者微信拉入開發交流羣,大家一起交流關於Crawlab的使用和開發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章