JAVA 爬蟲框架webmagic 初步使用Demo

一想到做爬蟲大家第一個想到的語言一定是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

使用問題

  1. 下載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包路徑

  1. 最新版的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

案例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章