java分佈式爬蟲引擎j2crawler

j2crawler

一、簡介

j2crawler是一個通用的、最小化依賴第三方組件、靈活擴展組件、開箱即用,簡單易用性、支持目前主流的通用的解析語法、靈活多變的實時/離線抓取方式、遵循Springboot規範、並且支持分佈式部署的Java爬蟲引擎,能夠最大程度的提高一個爬蟲新手構建一個高可用性、高性能的爬蟲應用的門檻,並且提升開發爬蟲系統的開發效率,只需要具備一些簡單的網頁解析語法同時遵循j2crawler少量開發約束即可。

二、爬蟲引擎特性:

  • 抓取請求靈活定製(定製請求參數、抓取上下文、Cookies、Header)
  • 定製抓取任務正則匹配URL白名單/黑名單列表;
  • 抓取失敗重試機制;
  • 最小化依賴第三方組件;
  • 靈活擴展各個內部組件;
  • 開箱即用,簡單易用性;
  • 支持目前主流的通用的解析語法;
  • 靈活多變的實時/離線抓取方式;
  • 遵循Springboot規範;
  • 只需要遵循引擎極少約束即可應用應用至生產環境;
  • 整個引擎需要環境和依賴已完成鏡像打包;
  • 支持簡單靜態頁面抓取;
  • 複雜的動態渲染(瀏覽器級別)抓取(模擬瀏覽器級別操作行爲以及複雜渲染的數據抓取);
  • Web自動化測試;

三、引擎架構

J2crawler爬蟲引擎架構圖:
在這裏插入圖片描述
J2crawler爬蟲引擎內部組件架構圖:

在這裏插入圖片描述

四、Quik Start

  1. 添加starter依賴
  <dependency>
      <groupId>com.saas.jplogiccloud</groupId>
      <artifactId>jplogiccloud-starter-j2crawler</artifactId>
  </dependency>
  1. 在springboot應用配置實例demo

按照引擎的規範創建FetchJob即可(具體原理詳見以上架構圖),引擎啓動時自動添加Job到引擎上下文中並按照自己的定製調度該FetchJob;

package com.saas.jplogiccloud.crawler.jobs;

import com.saas.jplogiccloud.starter.j2crawler.annotation.FetchJob;
import com.saas.jplogiccloud.starter.j2crawler.core.*;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

@FetchJob(fetchTimeOut = 60000, jobName = "demoFetchJob")
@Slf4j
public class DemoFetchJob extends BaseFetchJob {

    @Override
    public List<FetchReq> initFetchReqs() {
        List<FetchReq> fetchReqs = new ArrayList<>();
        FetchReq fetchReq = FetchReq.builder()
                .reqUrl("http://www.ip3366.net/?stype=1&page=1")
                .onFetchBack("onFetch")
                .fetcherType(FetcherType.WEBDRIVER)
                .build();
        fetchReqs.add(fetchReq);
        return fetchReqs;
    }

    @Override
    public String[] initFetchUrls() {
        return null;
    }

    @Override
    public void onFetch(FetchResp resp) {
        try {

        } catch (Exception e) {
            log.info(">>>> demoFetchJob-> 抓取數據異常:{}", e.getMessage());
            e.printStackTrace();
        }
    }

    
    private void getCloudProxyIp(FetchResp resp, JXDocument doc) {
    }
}

  1. 配置springboot引擎配置application.yml
j2crawler:
  application:
    enabled: true
    jobnames: "poxyIpFetchJob"
    threadunit: 2
    driver:
      driverKey: "webdriver.chrome.driver"
      driverPath: "C://Users//Administrator//AppData//Local//Google//Chrome//Application//chromedriver.exe"

剩下的就是springboot應用的其他配置了,在這裏省略;

五、爬蟲實例Demo

1、PoxyIpFetchJob ===> 免費代理IP抓取;

在這裏插入圖片描述在這裏插入圖片描述
2、NCoVFetchJob ===> 2019NCov新型冠狀疫情信息實時抓取;

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

五、技術羣交流

在這裏插入圖片描述

六、其他交流

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