JAVA 爬蟲框架webmagic 初步使用Demo

一想到作爬蟲你們第一個想到的語言必定是python,畢竟python比方便,並且最近也很是的火爆,可是python有一個全局鎖的概念新能有瓶頸,因此用java仍是比較牛逼的,html

webmagic 官網 https://webmagic.io/ 講的很是詳細,固然java比較優秀的框架還有不少不知這些java

各種JAVA爬蟲框架

Python中大的爬蟲框架有scrapy(風格相似django),pyspider(國產python爬蟲框架)。
除了Python,Java中也有許多爬蟲框架。python

  • nutch

apache下的開源爬蟲程序,功能豐富,文檔完整,有數據抓取解析以及存儲的模塊。
它的特色是規模大。git

  • heritrix

比較成熟
地址:internetarchive/heritrix3 · GitHub很早就有了,經歷過不少次更新,使用的人比較多,功能齊全,文檔完整,網上的資料也多。有本身的web管理控制檯,包含了一個HTTP 服務器。操做者能夠經過選擇Crawler命令來操做控制檯。github

  • crawler4j

UCI大學(加利福尼亞歐文分校)出品,簡潔,古老,結構清晰web

  • webmagic

國產,借鑑了scrapy,有pipeline,功能比較簡單。Request也有meta屬性,meta屬性是一個字典,meta屬性的value是Object類型apache

具體參考 https://www.cnblogs.com/weiyinfu/p/8099605.htmldjango

使用問題

  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/po...

案例

相關文章
相關標籤/搜索