開源的Java垂直爬蟲框架:webmagic
webmagic是一個開源的Java垂直爬蟲框架,目標是簡化爬蟲的開發流程,讓開發者專注于邏輯功能的開發。webmagic的核心非常簡單,但是覆蓋爬蟲的整個流程,也是很好的學習爬蟲開發的材料。作者曾經在前公司進行過一年的垂直爬蟲的開發,webmagic就是為了解決爬蟲開發的一些重復勞動而產生的框架。
web爬蟲是一種技術,webmagic致力于將這種技術的實現成本降低,但是出于對資源提供者的尊重,webmagic不會做反封鎖的事情,包括:驗證碼破解、代理切換、自動登錄等。
webmagic的主要特色:
- 完全模塊化的設計,強大的可擴展性。
- 核心簡單但是涵蓋爬蟲的全部流程,靈活而強大,也是學習爬蟲入門的好材料。
- 提供豐富的抽取頁面API。
- 無配置,但是可通過POJO+注解形式實現一個爬蟲。
- 支持多線程。
- 支持分布式。
- 支持爬取js動態渲染的頁面。
- 無框架依賴,可以靈活的嵌入到項目中去。
webmagic的架構和設計參考了以下兩個項目:
python爬蟲 scrapy https://github.com/scrapy/scrapy
Java爬蟲 Spiderman https://gitcafe.com/laiweiwei/Spiderman
項目結構
webmagic主要包括兩個包:
-
webmagic-core
webmagic核心部分,只包含爬蟲基本模塊和基本抽取器。webmagic-core的目標是成為網頁爬蟲的一個教科書般的實現。
-
webmagic-extension
webmagic的擴展模塊,提供一些更方便的編寫爬蟲的工具。包括注解格式定義爬蟲、JSON、分布式等支持。
webmagic還包含兩個可用的擴展包,因為這兩個包都依賴了比較重量級的工具,所以從主要包中抽離出來,這些包需要下載源碼后自己編譯::
-
webmagic-saxon
webmagic與Saxon結合的模塊。Saxon是一個XPath、XSLT的解析工具,webmagic依賴Saxon來進行XPath2.0語法解析支持。
-
webmagic-selenium
webmagic與Selenium結合的模塊。Selenium是一個模擬瀏覽器進行頁面渲染的工具,webmagic依賴Selenium進行動態頁面的抓取。
在項目中,你可以根據需要依賴不同的包。