转载

vscrawler 0.2.6 发布,抓取复杂交互逻辑的爬虫框架

vscrawler是一个抓取复杂交互逻辑的爬虫框架,适合进行app数据抓取、需要登录的抓取、抓取封堵突破、在线抓取(抓取请求交由上游控制,如暴露http接口)、离线抓取(抓取任务入库,然后任务调度交由框架控制)。

自上次0.2.2发布后,连续多次发布到了0.2.6,这是因为vscrawler在公司内部使用,线上系统无法引用非公司仓库snapshot依赖。不过多次更新后,vscrawler在线抓取模块已经在我司稳定运行。

本次主要更新如下:

  1. session pool关于session分发速度优化,超时控制逻辑优化。避免了session获取无效等待,优化在线抓取接口响应速度。同时允许外部接口控制抓取超时参数

  2. session pool中,session数量异常膨胀问题,该问题为session pool中一个参数判定有误导致的。

  3. 资源管理器中,资源操作加锁失败问题修复,资源自leave queue中recovery时,可能导致资源数据丢失问题。

  4. 修复爬虫停止时seesion未触发销毁回调的问题,这会导致爬虫停止,爬虫所需要的数据不会feedback,进而触发资源管理器不会将该资源解锁。(短时间大量重启将会导致资源管理器不能分发到资源,如不能获取账户数据等)

  5. 实现redis 分段资源队列,分段队列牺牲了轮询队列里面部分资源顺序准确性,换来了在redis链表上面更少的轮询操作,降低redis操作时间复杂度。可以用来处理上十万的资源管理。

  6. 修复用户登录插件中,登录失败未标记session无效的bug,该问题将会导致无效session也作为资源分发给抓取业务。导致抓取逻辑无法正常获取数据(以前没有深究这个问题,都是抓取是手动判断session状态,然后重试任务)。

  7. 增加session回收生命周期回调点(SessionRecycleEvent),业务方可以监听该事件,触发对应逻辑

  8. 爬虫启动的瞬间停止,将会触发种子管理器一个并发操作异常。这是因为框架在未初始化完成的时候就开始了种子管理器销毁动作,导致组件并发操作。现在将逻辑加锁,避免该问题。

  9. pipine中,关于抓取结果存储,修改为object(之前为string)。这是我感觉之前设计不太友好的地方,受用户建议,更改为object。所以本次升级,pipline的接口和老版本不兼容(本次升级为不兼容升级)

  10. 在爬虫以all in one的jar包的方式运行的时候,无热发配置文件,框架强制监控热发文件将会导致io异常,所以爬虫以独立jar包的方式运行的时候,取消热发配置文件功能。

  11. 修复spring boot使用vscrawler的时候,无法使用all in one的方式运行的bug。该bug为spring boot重写了classloader,导致vscrawler内置类扫描器无法解析spring boot ClassLoader中注册的jar文件导致的。本次升级适配了spring boot 打独立jar包的运行模式对应的classLoader中jar包资源jar文件的索引方案。

vscrawler项目地址:

码云: https://gitee.com/virjar/vscrawler

github: https://github.com/virjar/vscrawler

vscrawler官方文档地址: http://vscrawler.virjar.com/

原文  https://www.oschina.net/news/92730/vscrawler-0-2-6
正文到此结束
Loading...