vscrawler - 适合抓取封堵的爬虫框架


Apache
跨平台
Java

软件简介

VSCrawler是一个适合用作抓取的爬虫框架,在更多场景倾向于功能扩展性而牺牲使用简便性。这让VSCrawler非常强大,让他可以灵活的应对目标网站的反爬虫策略。为了方便描述,文档中可能使用VS替代VSCrawler作为VSCrawler简写。

vscrawler有挺多特点

1. 多用户登录,天生支持多用户登录,各个用户资源隔离维护。

2.数据完整性保证,vs保证即使爬虫宕机也会尽力序列化爬虫任务。

3.任务调度,vs目前不支持其他爬虫框架schedular角色的定制,不过vs本身的任务调度很完善,支持自定义消重规则、断点续爬、重试规则定制、重复抓取(在消重之上封装了可重入的特性)

4.抽取器,vs结合其他爬虫框架的实现,封装了整套抽取器体系。包括css query &&
xpath(SipSoup,自JsoupXpath和Xsoup发展而来)、链式抽取(集合正则、xpath、css
query、字符串处理函数、jsonpath)、字符串函数(基于表达式描述字符串逻辑,配合字符串函数表达式可以实现无编码支持字符串局部清洗处理)、表格处理(在css
和xpath特征都不明显的html文档上面使用很方便)

5.热发控制,vs有一个热发配置文件,只有配置文件配置项修改了,vs内部组件便可以感知到配置变更,同时执行对象更新操作。比如可以动态修改执行工作线程数量

6.代理规则,vs设计之前我便有一套完善的代理ip池系统(dungproxy),ip池本身就有基于顺序惩罚模型的权值轮询队列,基于ip质量自动探测的方式调度ip使用顺序,实现了在免费的劣质ip源上架构稳定代理服务的系统。目前vs默认集成了dungproxy,当然ip系统也是完全可以替换的

7.mq模型的事件循环系统,vs内置一个EventLoop,用来实现各个组件低耦合的通信。对于vs的深度定制几乎不需要依靠各种生命周期回调,只需要订阅感兴趣的消息,然后就可以自动接收各种消息,同时也可以发送各种消息。

8.非URL种子,目前大多数爬虫的种子都是URL,vs对种子的定义减少了这个限定,这样可以基于某些条件构建种子任务(如抓取航班数据,可以通过所有城市编码;如抓取企业信息,可以通过企业编号列表)

致谢:

感谢webmagic,vs基础结构参考了webmagic,vs的SipSoup参考了webmagic中的XSoup

感谢SeimiCrawler,vs的SipSoup参考了JsoupXpath

感谢WebCollector,vs的种子管理参考了WebCollector的伯克利数据库

文档:

vs官网文档:http://vscrawler.virjar.com/

项目地址:

开源中国:https://gitee.com/virjar/vscrawler

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