企業級網絡爬蟲應用(1)

企業級網絡爬蟲應用(1) 開篇

開篇不打算寫太多技術細節,只想來闡述一下計劃寫該系列博客的初衷。

公司有一項業務是做政策收集及發佈的,說白了就是人工查看哪些政府網站有新的政策發佈了,就複製粘貼,修改下格式發佈到我們的網站上,這算是一個政策信息的聚合平臺吧。但是這種方式確實是費時費力,搞得這方面的人手一直緊張。後來leader一看一直招人也不是個辦法,就想着能不能做個爬蟲來自動抓取和發佈信息,後來聽說我會些python,就把這項光榮而艱鉅的任務交個了我。其實博主也只是在實習期間學習過一段時間的python,這麼長時間不用早就忘了,更別說之前對爬蟲只是聽說,沒有任何的概念。沒辦法困難來了,硬着頭皮也要上啊。

經過一個多月的加班奮戰,終於在2015年年底完成了爬蟲的第一個版本。該版本是基於大名鼎鼎的Scrapy框架開發的,由於python自身的隊列不支持分佈式,採用了Redis來作爲url排重和隊列,以實現爬蟲的分佈式抓取;存儲採用的是mongodb數據庫;動態網頁採用的是Selenium模擬瀏覽器加載。其中實現了政策信息標題、時間、內容的自動抽取,地域、行業的自動劃分等功能。

轉眼到了2016年的年底,一年時間就這樣過去了,這一年間該爬蟲運行還算穩定,公司leader對這套系統也算滿意,並表示希望能通過爬蟲覆蓋全國的網站,每當這時我都感覺羞愧難當,因爲我深知這套系統還遠遠達不到令我滿意的效果,隨着對爬蟲技術的不斷了解,這種感覺越來越明顯,但是苦於忙於其他事情,一直抽不出時間來改,很是着急。

正好年底做計劃時leader把爬蟲的改版任務列入了明年的計劃中,博主也想借這個機會再系統的瞭解下爬蟲,並寫個系列的博客,一方面是通過總結加深理解,另一方面也希望我的文章能對一些人有所幫助。粗略規劃了下下一步要改進的方面:

  1. 增加可視化調度系統
    目前版本的爬蟲系統的啓動、停止、重啓只能通過登錄每臺虛擬機通過命令行的方式進行操作,費時費力。採用圖形化的調度處理,點點按鈕就可以啓動、停止爬蟲線程,方便快捷,而且可以實時監控爬蟲的運行狀態。
    初步規劃使用可視化調度架構Dagobah實現。

  2. 改變爬蟲部署環境
    目前爬蟲部署方式是,在服務器下用VMWare建立多個Linux虛擬機,分別用來部署爬蟲。這種方式的缺點是對資源消耗較多,且難以維護。
    規劃使用Docker作爲爬蟲的部署容器。

  3. 動態頁面處理
    目前爬蟲系統內部處理動態頁面都是採用PhantomJS來模擬瀏覽器,但整體效率感覺還是達不到要求。Scrapy官方推薦的處理動態頁面的方式爲scrapyjs,規劃改用這種方式。

  4. 系統故障預警
    像爬蟲系統這樣要求實時性較高的系統,故障預警顯得尤爲重要,能夠避免因程序、網絡或數據庫故障導致數據抓取保存失敗,而相關人員卻不知道而造成的損失。
    規劃在程序中加入相關監控機制,出現故障及時郵件通知相關人員。

  5. 數據存儲方式
    目前版本系統的數據是存儲在mongodb中,初期這種存儲方式效率會很高。但隨着數據量的不斷增加,查詢寫入速度會變的越來越慢。
    規劃下個版本改用HBase作爲抓取數據的存儲方式。

  6. 增加消息隊列
    目前版本系統數據都是直接操作數據庫進行數據的存取的,但是這種方式隨着爬蟲線程的增加,對數據庫會造成很大的壓力。
    下個版本規劃使用kafka做消息隊列,所有數據都通過kafka再實例化到數據庫。

  7. 數據可視化
    開發數據可視化系統,以圖形圖像方式展現數據。可使用的框架有D3.js、Echarts等。

  8. 頁面配置優化
    目前我們的抓取規則都是通過人工配置XPath的方式,從瀏覽器複製xpath再粘貼到配置頁面,還是有些麻煩的,下個版本計劃做一個類似八爪魚那樣的配置客戶端,通過集成模擬瀏覽器,來實現區域的選中,省去了複製粘貼的繁瑣。

以上就是規劃的下個版本要優化的功能,可以看出真正的抓取功能只是佔整個系統的很少的一部分,大部分還是集中在系統的完整性和數據的展現方面。稍後幾篇博客可能就會介紹整體架構設計和其中的一些細節的功能,希望我能堅持寫完直到整個系統上線。

同時懇請看到博客的大佬們,如果其中有什麼觀點存在錯誤或歧義的,請留言指出,博主一定儘快修正,以免誤人子弟,先在此謝過。

 

作者:jinhaolin

出處:http://www.cnblogs.com/jinhaolin/>

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出,如有問題,可郵件([email protected])諮詢.

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