java分布式爬虫引擎j2crawler

j2crawler

一、简介

j2crawler是一个通用的、最小化依赖第三方组件、灵活扩展组件、开箱即用,简单易用性、支持目前主流的通用的解析语法、灵活多变的实时/离线抓取方式、遵循Springboot规范、并且支持分布式部署的Java爬虫引擎,能够最大程度的提高一个爬虫新手构建一个高可用性、高性能的爬虫应用的门槛,并且提升开发爬虫系统的开发效率,只需要具备一些简单的网页解析语法同时遵循j2crawler少量开发约束即可。

二、爬虫引擎特性:
  • 抓取请求灵活定制(定制请求参数、抓取上下文、Cookies、Header)
  • 定制抓取任务正则匹配URL白名单/黑名单列表;
  • 抓取失败重试机制;
  • 最小化依赖第三方组件;
  • 灵活扩展各个内部组件;
  • 开箱即用,简单易用性;
  • 支持目前主流的通用的解析语法;
  • 灵活多变的实时/离线抓取方式;
  • 遵循Springboot规范;
  • 只需要遵循引擎极少约束即可应用应用至生产环境;
  • 整个引擎需要环境和依赖已完成镜像打包;
  • 支持简单静态页面抓取;
  • 复杂的动态渲染(浏览器级别)抓取(模拟浏览器级别操作行为以及复杂渲染的数据抓取);
  • Web自动化测试;
三、引擎架构

J2crawler爬虫引擎架构图:
在这里插入图片描述
J2crawler爬虫引擎内部组件架构图:

在这里插入图片描述
Java微信公众号文章抓取实例:

在这里插入图片描述

四、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新型冠状疫情信息实时抓取;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述3、CsdnBlogFetchJob ===> 我的博客信息实时抓取;

在这里插入图片描述4、PicShowFetchJob ===> 博客头像实时抓取;

在这里插入图片描述在这里插入图片描述
以上案例服务清单列表:
在这里插入图片描述

五、技术群交流

在这里插入图片描述

六、其他交流
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值