Skip to content

v0.5.0

Latest
Compare
Choose a tag to compare
@geebytes geebytes released this 23 Mar 12:43

v0.5.0 (2023-03-23)

Refactor

  • 拆分引擎组件,抽离独立的组件接口,提供自定义组件的能力
  • 移除定时轮询接口
  • 优化引擎内部对单个请求进行调度的流程
  • 移除Context全局管理器,在引擎端引入context计数器
  • 移除RequestContext对象内存池,解决多协程场景下Request复用错误的问题
  • Request对象的Parser类型由func(resp *Context, req chan<- *Context) error方法改为string方便对Request对象进行序列化
  • 优化爬虫停止判断策略,增加组件接口判断逻辑,允许用户自定义爬虫终止逻辑

Features

  • 新增分布式抓取组件,提供分布式部署和抓取的能力

  • 新增gRPC和http接口,提供实时远程控和查询制爬虫状态的能力

  • 引擎内部新增一个运行时的状态管理器,用于控制爬虫的启停

  • Request对象新增一个DoNotFilter字段,支持Request粒度下的去重控制

  • Request对象新增方法ToMap() (map[string]interface{}, error),用于将Request对象进行序列化

  • Request对象新增方法RequestFromMap(src map[string]interface{}, opts ...RequestOption) *Request,用于将map[string]interface{}对象进行反序列化为Request对象

  • Request新增初始化选项RequestWithPostForm(payload url.Values) RequestOption用于接收application/x-www-form-urlencoded参数

  • Request新增初始化选项RequestWithBodyReader(body io.Reader) RequestOption用于从内存读取二进制数据

  • Request新增初始化选项RRequestWithDoNotFilter(doNotFilter bool) RequestOption用于控制Request对象是否参与去重

  • Response新增一个接口WriteTo(writer io.Writer) (int64, error),允许用户将response写入自定义的io.Writer,例如一个本地文件io实例,实现文件下载

  • 新增ComponentInterface组件接口,允许用户自定义组件

  • 新增DistributedWorkerInterface分布式节点控制接口允许用户实现自定义对节点的控制逻辑

Style

  • 重命名RequestResponseHeaderHeaders

  • 重命名CacheInterface接口的所有方法以大写字母开头