内容简介:vscrawler是一个抓取复杂交互逻辑的爬虫框架,适合进行app数据抓取、需要登录的抓取、抓取封堵突破、在线抓取(抓取请求交由上游控制,如暴露http接口)、离线抓取(抓取任务入库,然后任务调度交由框架控制)。 ...
vscrawler是一个抓取复杂交互逻辑的爬虫框架,适合进行app数据抓取、需要登录的抓取、抓取封堵突破、在线抓取(抓取请求交由上游控制,如暴露http接口)、离线抓取(抓取任务入库,然后任务调度交由框架控制)。
自上次0.2.2发布后,连续多次发布到了0.2.6,这是因为vscrawler在公司内部使用,线上系统无法引用非公司仓库snapshot依赖。不过多次更新后,vscrawler在线抓取模块已经在我司稳定运行。
本次主要更新如下:
session pool关于session分发速度优化,超时控制逻辑优化。避免了session获取无效等待,优化在线抓取接口响应速度。同时允许外部接口控制抓取超时参数
session pool中,session数量异常膨胀问题,该问题为session pool中一个参数判定有误导致的。
资源管理器中,资源操作加锁失败问题修复,资源自leave queue中recovery时,可能导致资源数据丢失问题。
修复爬虫停止时seesion未触发销毁回调的问题,这会导致爬虫停止,爬虫所需要的数据不会feedback,进而触发资源管理器不会将该资源解锁。(短时间大量重启将会导致资源管理器不能分发到资源,如不能获取账户数据等)
实现 redis 分段资源队列,分段队列牺牲了轮询队列里面部分资源顺序准确性,换来了在redis链表上面更少的轮询操作,降低redis操作时间复杂度。可以用来处理上十万的资源管理。
修复用户登录插件中,登录失败未标记session无效的bug,该问题将会导致无效session也作为资源分发给抓取业务。导致抓取逻辑无法正常获取数据(以前没有深究这个问题,都是抓取是手动判断session状态,然后重试任务)。
增加session回收生命周期回调点(SessionRecycleEvent),业务方可以监听该事件,触发对应逻辑
爬虫启动的瞬间停止,将会触发种子管理器一个并发操作异常。这是因为框架在未初始化完成的时候就开始了种子管理器销毁动作,导致组件并发操作。现在将逻辑加锁,避免该问题。
pipine中,关于抓取结果存储,修改为object(之前为string)。这是我感觉之前设计不太友好的地方,受用户建议,更改为object。所以本次升级,pipline的接口和老版本不兼容(本次升级为不兼容升级)
在爬虫以all in one的jar包的方式运行的时候,无热发配置文件,框架强制监控热发文件将会导致io异常,所以爬虫以独立jar包的方式运行的时候,取消热发配置文件功能。
修复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/
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Python爬虫:抓取新浪新闻数据
- Python爬虫:抓取新浪新闻数据
- python爬虫-- 抓取网页、图片、文章
- Python爬虫抓取技术的门道
- 如何使用代理IP进行数据抓取,PHP爬虫抓取亚马逊商品数据
- 利用Python网络爬虫抓取网易云歌词
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。