XXL-CRAWLER v1.5.0 | Java 爬虫框架
Release Notes
- 1、【升级】项目升级JDK17;
- 2、【升级】代码兼容改造,适配JDK17;
- 3、【升级】多个依赖升级至更新版本,如jsoup、selenium等。
引入Maven依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-crawler</artifactId>
<version>${最新稳定版}</version>
</dependency>
代码示例
注意:仅供学习测试使用,如有侵犯请联系删除 提示:更多测试代码可以前往仓库查看:测试代码目录
- 爬虫名称:Gitee高星项目采集爬虫
- 爬虫功能:一行代码启动多线程爬虫,分页方式扩散爬取“Gitee开源项目列表”,通过“注解式”自动提取页面数据,封装成PageVo输出;
XxlCrawler crawler = new XxlCrawler.Builder()
.setUrls("https://gitee.com/explore/all?order=starred&page=1") // 设置爬虫入口URL
.setAllowSpread(true) // 允许爬虫扩散
.setWhiteUrlRegexs("^https:\\\\/\\\\/gitee\\\\.com\\\\/explore\\\\/all\\\\?order=starred&page=[1-5]$") // 设置爬虫扩散的URL白名单正则表达式,控制扩散范围
.setThreadCount(3) // 设置爬虫线程池大小
.setPauseMillis(100) // 设置爬虫每次抓取间隔时间,避免对下游压力过大
.setPageParser(new PageParser<GiteeProjectPageVo>() {
@Override
public void afterParse(Response<GiteeProjectPageVo> response) {
/**
* 获取爬虫结果数据:afterParse 会在多线程爬虫运行过程中实时输出爬虫结果数据,避免结尾一次性反馈造成大对象问题;可实时消费处理数据,如存储在DB等。
*/
if (response.getParseVoList() != null) {
for (GiteeProjectPageVo pageVo: response.getParseVoList()) {
logger.info("response.getHtml().baseUri()={}, PageDataVo={}", response.getHtml().baseUri(), pageVo);
}
}
}
})
.build();
crawler.start(true);
简介
XXL-CRAWLER 是一个轻量级Java爬虫框架。一行代码开发一个多线程爬虫,全注解方式采集页面数据至Java对象,拥有"多线程、全注解、JS渲染、代理、分布式扩展"等特性;
项目资料
特性
- 1、简洁:API直观简洁,可快速上手;
- 2、轻量级:底层实现仅强依赖jsoup,简洁高效;
- 3、模块化:模块化的结构设计,可轻松扩展;
- 4、全注解:支持通过注解提取页面数据,高效映射页面数据到PageVO对象,底层自动完成PageVO对象的数据抽取和封装返回;单个页面支持抽取一个或多个PageVO;
- 5、多线程:线程池方式运行,提高采集效率;
- 6、扩散全站:支持以现有URL为起点扩散爬取整站;
- 7、JS渲染:通过扩展 "PageLoader" 模块,支持采集JS动态渲染数据。原生提供 Jsoup(非JS渲染,速度更快)、Selenium+ChromeDriver(JS渲染,兼容性高) 等多种实现,支持自由扩展其他实现;
- 8、代理IP:对抗反采集策略规则WAF;
- 9、动态代理:支持运行时动态调整代理池,以及自定义代理池路由策略;
- 10、失败重试:请求失败后重试,并支持设置重试次数;
- 11、异步:支持同步、异步两种方式运行;
- 12、幂等去重:防止重复爬取;
- 13、URL扩散过滤:支持设置页面白名单正则,过滤URL;
- 14、分布式支持:通过扩展 "RunUrlPool" 模块,并结合Redis或DB共享运行数据可实现分布式。默认提供LocalRunUrlPool单机版爬虫;
- 15、自定义请求信息,如:请求参数、Cookie、Header、UserAgent轮询、Referrer等;
- 16、动态参数:支持运行时动态调整请求参数;
- 17、超时控制:支持设置爬虫请求的超时时间;
- 18、主动停顿:爬虫线程处理完页面之后进行主动停顿,避免过于频繁被拦截;

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
XXL-SSO v2.0.0 发布|单点登录框架
Release Notes 1、【升级】项目升级 SpringBoot3 + JDK17; 2、【升级】升级多项依赖至较新版本,如jakarta、spring等,适配JDK17; 项目接入示例 XXL-SSO 作为单点登录框架,支持业务渐进式集成接入使用。结合系统及业务特征差异,仓库代码提供三种业务中接入示例: 1、Web常规登录:适用于常规“单体系统”场景;限制相关Web系统部署在相同域名下,登录凭证存储在公共域名下; 2、Native登录:适用于“移动端、小程序、前后端分离、客户端”等系统场景;适用于无Cookie场景,天然不受限域名。支持多端登录、以及登录态共享,但是登录凭证需要客户端管理维护; 3、CAS单点登录:适用于“多系统跨域、企业多系统统一登录”等系统场景;解决了系统 跨域登录认证、统一登录认证 问题;但是需要单独部署CAS认证中心、提供单点登录相关基础能力; 此处以 “Web常规登录” 为例进行讲解: (*三种登录方式完整接入示例参考项目文档,如有需求可前往查看 *) 第一步:添加maven依赖以及 XXL-SSO 配置文件 ### xxl-sso 登录凭证/to...
-
下一篇
XXL-CACHE v1.4.0 | 多级缓存框架
Release Notes 1、【升级】项目升级JDK17; 2、【升级】项目部分依赖升级,如caffeine,适配JDK17; 3、【优化】L1缓存广播发布/订阅断连重连优化(ISSUE-32); 4、【重构】合并PR-28,重构 getCache 方法并优化性能; 5、【优化】合并PR-35,引入单元测试框架,重写单元测试方法; 6、【升级】多个依赖升级最新版本,如jedis、caffeine等; XXL- CACHE 快速接入示例 代码参考github仓库 /test 目录:https://github.com/xuxueli/xxl-cache/tree/master/xxl-cache-samples 1、Maven引入: <!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-cache-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-cache-core<...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 面试大杂烩
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果