一想到作爬蟲你們第一個想到的語言必定是python,畢竟python比方便,並且最近也很是的火爆,可是python有一個全局鎖的概念新能有瓶頸,因此用java仍是比較牛逼的,html
webmagic 官網 https://webmagic.io/
講的很是詳細,固然java比較優秀的框架還有不少不知這些java
Python中大的爬蟲框架有scrapy(風格相似django),pyspider(國產python爬蟲框架)。
除了Python,Java中也有許多爬蟲框架。python
apache下的開源爬蟲程序,功能豐富,文檔完整,有數據抓取解析以及存儲的模塊。
它的特色是規模大。git
比較成熟
地址:internetarchive/heritrix3 · GitHub很早就有了,經歷過不少次更新,使用的人比較多,功能齊全,文檔完整,網上的資料也多。有本身的web管理控制檯,包含了一個HTTP 服務器。操做者能夠經過選擇Crawler命令來操做控制檯。github
UCI大學(加利福尼亞歐文分校)出品,簡潔,古老,結構清晰web
國產,借鑑了scrapy,有pipeline,功能比較簡單。Request也有meta屬性,meta屬性是一個字典,meta屬性的value是Object類型apache
具體參考 https://www.cnblogs.com/weiyinfu/p/8099605.html
django
<!--爬蟲框架--> <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>0.7.3</version> </dependency> <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-extension</artifactId> <version>0.7.3</version> </dependency>
注意這裏0.7.3是maven目前最新版本可是有個問題沒有修復,運行回報java.net.SSL異常,須要去webmagic官網下載最新源碼而後本身構建webmagic-core這個包代替maven倉庫的纔會正常運行
首頁 去 https://github.com/code4craft/webmagic
下載最新master源碼服務器
而後IDEA打開項目 會自動下載maven項目依賴如架構
而後IDEA運行mvn install 構建每一個模塊找到webmagic-parent最開始的進行構建
如上圖若是構建成功會從新打包webmagic-core的jar,而後咱們把這個jar安裝到咱們本地的maven倉庫替換掉原來下載的webmagic-core-0.7.6.jar
經過maven如下命令安裝本地
mvn install:install-file -Dfile=webmagic-core-0.7.3.jar -DgroupId=us.codecraft -DartifactId=webmagic-core -Dversion=0.7.3 -Dpackaging=jar
其中-Dfile參數是你新構建的webmagic-core的jar包路徑
在maven項目resources目錄新建
聲明日誌輸出等級,位置,樣式,才能正常運行
WebMagic的結構分爲Downloader、PageProcessor、Scheduler、Pipeline四大組件,並由Spider將它們彼此組織起來。這四大組件對應爬蟲生命週期中的下載、處理、管理和持久化等功能。WebMagic的設計參考了Scapy,可是實現方式更Java化一些。
而Spider則將這幾個組件組織起來,讓它們能夠互相交互,流程化的執行,能夠認爲Spider是一個大的容器,它也是WebMagic邏輯的核心。
WebMagic整體架構圖以下:
咱們只用寫本身的PageProcessor實現PageProcessor接口就行
package com.kenx; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Spider; import us.codecraft.webmagic.processor.PageProcessor; public class BlogPageProcessor implements PageProcessor { private Site site = Site.me(); @Override public void process(Page page) { } @Override public Site getSite() { return site; } public static void main(String[] args) { Spider.create(new BlogPageProcessor()).addUrl("http://juejin.im/post/5e216eda6fb9a0300e1617eb").run(); } }
經過Spider入口運行本身寫的PageProcessor就能夠啓動爬蟲到這來就完美結束
詳細官網文檔 http://webmagic.io/docs/zh/po...
案例