最近工作主要是一些爬蟲相關(guān)的東西,由于公司需要構(gòu)建自己的爬蟲框架,在調(diào)研過程中參考了許多優(yōu)秀的開源作品,包括webmagic,webcollector,Spiderman等,通過學(xué)習(xí)這些優(yōu)秀的源碼獲益良多。

     webmagic是一個簡單靈活的爬蟲框架?;赪ebMagic,你可以快速開發(fā)出一個高效、易維護的爬蟲。(官網(wǎng)地址:http://webmagic.io/)

     本篇是webmagic源碼閱讀第一篇,主要探討webmagic的核心機制,即一個BFS的爬蟲是如何構(gòu)建出來的。

    webmagic分為以下四大組件,Downloader(頁面下載器),Scheduler(下載調(diào)度器),PageProcessor(頁面解析器),Pipeline(管道組件,通常做將抓取結(jié)果入庫寫文件等操作)

                          photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)(圖片來自官網(wǎng))

 以上四個組件由Spider組件組裝起來,爬取數(shù)據(jù)時協(xié)同工作。我們先研究webmagic的核心類Spider。

在Spider中的run()方法中可以清晰的看到典型的BFS代碼,通過一個循環(huán)不斷地從scheduler中的內(nèi)存隊列中取一個抓取任務(wù)(Request)并進行相應(yīng)處理(processRequest),如果抓取成功則回調(diào)監(jiān)聽器中的onSuccess()方法,失敗則調(diào)用onError()方法,最后將已抓取頁面的數(shù)量自增。如果隊列中沒有任何抓取任務(wù)了,爬蟲會在這里停一會防止有新的任務(wù)

網(wǎng)友評論