j2crawler
一、簡介
j2crawler是一個通用的、最小化依賴第三方組件、靈活擴展組件、開箱即用,簡單易用性、支持目前主流的通用的解析語法、靈活多變的實時/離線抓取方式、遵循Springboot規範、並且支持分佈式部署的Java爬蟲引擎,能夠最大程度的提高一個爬蟲新手構建一個高可用性、高性能的爬蟲應用的門檻,並且提升開發爬蟲系統的開發效率,只需要具備一些簡單的網頁解析語法同時遵循j2crawler少量開發約束即可。
二、爬蟲引擎特性:
- 抓取請求靈活定製(定製請求參數、抓取上下文、Cookies、Header)
- 定製抓取任務正則匹配URL白名單/黑名單列表;
- 抓取失敗重試機制;
- 最小化依賴第三方組件;
- 靈活擴展各個內部組件;
- 開箱即用,簡單易用性;
- 支持目前主流的通用的解析語法;
- 靈活多變的實時/離線抓取方式;
- 遵循Springboot規範;
- 只需要遵循引擎極少約束即可應用應用至生產環境;
- 整個引擎需要環境和依賴已完成鏡像打包;
- 支持簡單靜態頁面抓取;
- 複雜的動態渲染(瀏覽器級別)抓取(模擬瀏覽器級別操作行爲以及複雜渲染的數據抓取);
- Web自動化測試;
三、引擎架構
J2crawler爬蟲引擎架構圖:
J2crawler爬蟲引擎內部組件架構圖:
四、Quik Start
- 添加starter依賴
<dependency>
<groupId>com.saas.jplogiccloud</groupId>
<artifactId>jplogiccloud-starter-j2crawler</artifactId>
</dependency>
- 在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) {
}
}
- 配置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新型冠狀疫情信息實時抓取;
五、技術羣交流
六、其他交流
- 我的csdn博客地址:https://blog.csdn.net/romantichjwhjwhjw/
; - 我的gitee地址:https://gitee.com/romantichjw
; - 我的jplogiccloud微服務架構腳手架:https://gitee.com/romantichjw/jplogiccloud
;