各位好!從今天起,我將用幾個篇幅的文字向大家介紹一下我的一個開源作品——YayCrawler,其在GitHub上的網址是:https://github.com/liushuishang/YayCrawler,歡迎大家關注和反饋。
YayCrawler是一個基於WebMagic開發的分布式通用爬蟲框架,開發語言是Java。我們知道目前爬蟲框架很多,有簡單的,也有復雜的,有輕量型的,也有重量型的。您也許會問:你這個爬蟲框架的優勢在哪里呢?額,這個是一個很重要的問題!在這個開篇中,我先簡單的介紹一下我這個爬蟲框架的特點,后面的章幅會詳細介紹並講解它的實現,一圖勝千言:
1、分布式:YayCrawler就是一個大哥(Master)多個小弟(Worker)的架構(這種結構才是宇宙的真理),當然大哥還有一個小秘(Admin)和外界交往。
2、通用性:我們很多時候需要爬取不同網站的數據,各個網站的結構和內容都有很大的差別,基本上大部分人都是遇到一個網站寫一份代碼,沒法做到工具的復用。YayCrawler就是想改變這種情況,把不同的部分抽象出來,用規則來指導爬蟲做事。也就是說用戶可以在界面上配置如何抓取某個頁面的數據的規則,等爬蟲在爬取這個頁面的時候就會用這個事先配置好的規則來解析數據,然后把數據持久化。
3、可擴展的任務隊列:任務隊列由Redis實現,根據任務的狀態有四種不同的任務隊列:初始、執行中、成功、失敗。您也可以擴展不同的任務調度算法,默認是公平調度。
4、可定義持久化方式:爬取結果中,屬性數據默認持久化到MongoDB,圖片會被下載到文件服務器,當然您可以擴展更多的存儲方式。
5、穩定和容錯:任何一個失敗的爬蟲任務都會重試和記錄,只有任務真正成功了才會被移到成功隊列,失敗會有失敗的原因描述。
6、反監控組件:網站為了防止爬蟲也是煞費苦心,想了一系列的監控手段來反爬蟲。作為對立面,我們自然也要有反監控的手段來保障我們的爬蟲任務,目前主要考慮的因素有:cookie失效(需要登陸)、刷驗證碼、封IP(自動換代理)。
7、可以對任務設置定時刷新,比如隔一天更新某個網站的數據。
……
上面說了一大堆優點的目的只有一個:希望您能有興趣繼續看下去,哈哈。
言歸正傳,本文作為開篇,只是一個總覽,現在我們來整理一下后續文章的結構安排:
- 開源通用爬蟲框架YayCrawler-運行與調試
- 開源通用爬蟲框架YayCrawler-框架的運行機制
- 開源通用爬蟲框架YayCrawler-頁面的抽取規則定義
- 開源通用爬蟲框架YayCrawler-任務隊列詳解
- 開源通用爬蟲框架YayCrawler-頁面下載器詳解
- 開源通用爬蟲框架YayCrawler-規則解析器詳解
- 開源通用爬蟲框架YayCrawler-數據持久化詳解
- 開源通用爬蟲框架YayCrawler-反監控組件詳解
- 開源通用爬蟲框架YayCrawler-案例演示
- 開源通用爬蟲框架YayCrawler-待完善的功能