一想到做爬蟲大家第一個想到的語言一定是python,畢竟python比方便,而且最近也非常的火爆,但是python有一個全局鎖的概念新能有瓶頸,所以用java還是比較牛逼的,
webmagic 官網 https://webmagic.io/
講的非常詳細,當然java比較優秀的框架還有很多不知這些
各類JAVA爬蟲框架
Python中大的爬蟲框架有scrapy(風格類似django),pyspider(國產python爬蟲框架)。
除了Python,Java中也有許多爬蟲框架。
- nutch
apache下的開源爬蟲程序,功能豐富,文檔完整,有數據抓取解析以及存儲的模塊。
它的特點是規模大。
- heritrix
比較成熟
地址:internetarchive/heritrix3 · GitHub很早就有了,經歷過很多次更新,使用的人比較多,功能齊全,文檔完整,網上的資料也多。有自己的web管理控制檯,包含了一個HTTP 服務器。操作者可以通過選擇Crawler命令來操作控制檯。
- crawler4j
UCI大學(加利福尼亞歐文分校)出品,簡潔,古老,結構清晰
- webmagic
國產,借鑑了scrapy,有pipeline,功能比較簡單。Request也有meta屬性,meta屬性是一個字典,meta屬性的value是Object類型
具體參考 https://www.cnblogs.com/weiyinfu/p/8099605.html
使用問題
- 下載maven依賴
<!--爬蟲框架-->
<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包路徑
- 最新版的webmagic0.7.3 使用了slfj+Log4j2日誌你需要自己定義初始化log4j日誌屬性文件否則日誌會報錯
在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/posts/ch1-overview/architecture.html
案例