VSCrawler是一个适合用作抓取的爬虫框架,在更多场景倾向于功能扩展性而牺牲使用简便性。这让VSCrawler非常强大,让他可以灵活的应对目标网站的反爬虫策略。为了方便描述,文档中可能使用VS替代VSCrawler作为VSCrawler简写。
vscrawler有挺多特点
1.多用户登录,天生支持多用户登录,各个用户资源隔离维护。
2.数据完整性保证,vs保证即使爬虫宕机也会尽力序列化爬虫任务。
3.任务调度,vs目前不支持其他爬虫框架schedular角色的定制,不过vs本身的任务调度很完善,支持自定义消重规则、断点续爬、重试规则定制、重复抓取(在消重之上封装了可重入的特性)
4.抽取器,vs结合其他爬虫框架的实现,封装了整套抽取器体系。包括cssquery&&xpath(SipSoup,自JsoupXpath和Xsoup发展而来)、链式抽取(集合正则、xpath、cssquery、字符串处理函数、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官网文档:https://vscrawler.virjar.com/
项目地址:
开源中国:https://gitee.com/virjar/vscrawler
github:https://github.com/virjar/vscrawler
评论