Releases: zhegexiaohuozi/SeimiCrawler
Releases · zhegexiaohuozi/SeimiCrawler
V2.1.4
- 支持扩展自定义
SeimiDownloader
方便更灵活的定制自己的数据获取需求
默认走系统下载器,针对特殊请求,可以自行指定自定义的下载器,如:
public class MyCoustomDownloader implements SeimiDownloader {
@Override
public Response process(Request request) throws Exception {
Response seimiResponse = new Response();
seimiResponse.setSeimiHttpType(SeimiHttpType.OK_HTTP3);
seimiResponse.setRealUrl(request.getUrl());
seimiResponse.setUrl(request.getUrl());
seimiResponse.setRequest(request);
seimiResponse.setMeta(request.getMeta());
seimiResponse.setBodyType(BodyType.TEXT);
String content = webGetDo(request);
seimiResponse.setContent(content);
return seimiResponse;
}
@Override
public Response metaRefresh(String s) throws Exception {
//看自己情况,可以不实现不处理
return null;
}
@Override
public int statusCode() {
return 200;
}
@Override
public void addCookies(String s, List<SeimiCookie> list) {
//to do
}
}
其中 webGetDo()
是自定义逻辑,这里没有列出来,仅作示意,你可以随意实现你想实现的逻辑。
Request next = Request.build(url, MyCrawler::parseDetail);
next.setDownloader(MyCoustomDownloader.class);
push(next);
- 支持通过Jvm参数
-Dseimi.crawler.thread-num=xx
自定义每个Crawler
的工作线程数,最小值为1
v2.1.3
v2.1.2
- 升级部分依赖版本
- 支持json request body,
Request
对象中支持设置jsonBody
发起json request请求
<dependency>
<groupId>cn.wanghaomiao</groupId>
<artifactId>SeimiCrawler</artifactId>
<version>2.1.2</version>
</dependency>
- spring boot demo 默认关闭Redis 队列演示,避免误会
v2.1
- 升级依赖版本
- Apache httpclient 重定向优化
- 修复已知问题
v2.0
-
完美支持SpringBoot,可以尽情的集成SpringBoot现有生态,demo参考
-
回调函数支持方法引用,设置起来更自然
push(Request.build(s.toString(),Basic::getTitle));
- 非SpringBoot模式全局配置项通过
SeimiConfig
进行配置,包括 Redis集群信息,SeimiAgent信息等,SpringBoot模式则通过SpringBoot标准模式配置
常规模式:
SeimiConfig config = new SeimiConfig();
config.setSeimiAgentHost("127.0.0.1");
//config.redisSingleServer().setAddress("redis://127.0.0.1:6379");
Seimi s = new Seimi(config);
s.goRun("basic");
SpringBoot模式,在application.properties中配置
seimi.crawler.enabled=true
# 指定要发起start请求的crawler的name
seimi.crawler.names=basic,test
seimi.crawler.seimi-agent-host=xx
seimi.crawler.seimi-agent-port=xx
#开启分布式队列
seimi.crawler.enable-redisson-queue=true
#自定义bloomFilter预期插入次数,不设置用默认值 ()
#seimi.crawler.bloom-filter-expected-insertions=
#自定义bloomFilter预期的错误率,0.001为1000个允许有一个判断错误的。不设置用默认值(0.001)
#seimi.crawler.bloom-filter-false-probability=
-
分布式队列改用Redisson实现,底层依旧为redis,去重引入BloomFilter以提高空间利用率,一个线上的BloomFilter调参模拟器地址
-
JDK要求 1.8+
-
JsoupXpath同步升级至基于Antlr4重构的2.0版本,带来更为强大的Xpath语法支持
v1.3.5
- 修复 @Dreamerdream pr的版本没有考虑向下兼容问题
v1.3.4
- 修复分布式队列DefaultRedisQueue中json反序列化useSeimiAgent永远为false的bug @Dreamerdream
v1.3.3
-
修复异常次数超过最大重试次数后,无法进入异常处理器
-
增加当异常请求被提交给异常处理器超过三次后,再不对其进行处理
v1.3.2
- bug fix
v1.3.1
- 中文参数在框架层强制统一进行
utf8
编码的urlEncode,最大程度减少乱码请求 - Request请求在去重处理时,将区分范围扩大到所设定的请求参数