专知内容生产基石-数据爬取采集利器WebCollector 介绍

今天给大家介绍下我们专知数据采集系统的基石-WebCollector。 作为主流JAVA开源爬虫框架(GitHub上1500+Stars),WebCollector 轻量级、便于二次开发的特点得到了众多数开发者的选取与喜爱。特别与大家分享的是WebCollector的作者Hujunxianligong大神就是我们专知团队的成员。下面开始给大家简单介绍下WebCollector的特性以及在专知的应用。

WebCollector简介

WebCollector 是一个无须配置、便于二次开发的 Java 爬虫框架(内核),它提供精简的的 API,只需编写配置少量代码即可实现一个功能强大的爬虫系统。WebCollector -Hadoop 是 WebCollector 的 Hadoop 版本,支持分布式爬取。

WebCollector入口:百度Google 直接搜索 WebCollector即刻获取。

Github上地址:https://github.com/CrawlScript/WebCollector

1)内核构架图

WebCollector的任务执行流程如上,包括爬取任务生成更新调度管理、任务执行数据爬取、爬取数据信息抽取以及持久化存储。

2)WebCollector 2.x 特性

WebCollector 现已经为2.71版本,基本特性有:

  • 自定义遍历策略,可完成更为复杂的遍历业务,例如分页、AJAX
  • 可以为每个 URL 设置附加信息(MetaData),利用附加信息可以完成很多复杂业务,例如深度获取、锚文本获取、引用页面获取、POST 参数传递、增量更新等。
  • 使用插件机制,用户可定制自己的Http请求、过滤器、执行器等插件。
  • 内置一套基于内存的插件(RamCrawler),不依赖文件系统或数据库,适合一次性爬取,例如实时爬取搜索引擎。
  • 内置一套基于 Berkeley DB(BreadthCrawler)的插件:适合处理长期和大量级的任务,并具有断点爬取功能,不会因为宕机、关闭导致数据丢失。
  • 集成 selenium,可以对 JavaScript 生成信息进行抽取
  • 可轻松自定义 http 请求,并内置多代理随机切换功能。 可通过定义 http 请求实现模拟登录。
  • 使用 slf4j 作为日志门面,可对接多种日志
  • 使用类似Hadoop的Configuration机制,可为每个爬虫定制配置信息。

3)WebCollector 使用

  • 官网: https://github.com/CrawlScript/WebCollector
  • 镜像: http://git.oschina.net/webcollector/WebCollector

在Eclipse、Netbeans、Intellij等IDE参照Github配制Maven即可使用,或者使用Jar包。

<dependency>
    <groupId>cn.edu.hfut.dmic.webcollector</groupId>
    <artifactId>WebCollector</artifactId>
    <version>2.71</version>
</dependency>

自动爬取新闻网站的例子通过简单配制即可完成:

更多实用请访问WebCollector 主页或者

WebCollector项目主页 http://datahref.com/

WebCollector在专知的使用

我们基于WebCollector构建了实时定点数据采集系统,针对全网的AI内容进行精选采集。基本框架如下图所示。

数据采集系统包含代理配置管理、下载器、调度器、内容解析、控制器等,来可扩展性地可配置化采集内容。

感兴趣的同学加入专知——数据采集交流群(请先加微信小助手weixinhao: Rancho_Fang)或者是QQ群专知-人工智能交流群 426491390

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后端技术探索

后端线上服务监控与报警方案

一个功能上线后,其实研发心里根本没底儿,不知道这个功能上线以后是不是真的没问题;有经验一些老同学还知道直接登录线上机器去tail -f php.error.lo...

31120
来自专栏代码GG之家

只需一个命令,快速定位android的启动耗时

有兴趣合作,帮忙制作公众号的一些宣传图册的伙伴,可以加我微信,商谈具体事宜。 回顾: Android 启动过程框架 这节我们讲一个命令,用来定位android...

21560
来自专栏皮振伟的专栏

[linux][memory]KSM技术分析

前言: 先来回顾一下Linux平台上的节约内存的方案: swap:通过LRU淘汰掉掉一部分page,把这些page交换到磁盘上。再次访问到这些page的时候,k...

51980
来自专栏Java后端技术

解决Maven工程install时[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources

  最近的项目在用maven 进行install的时候,发现老师在控制台输出警告:[WARNING] Using platform encoding (UTF-...

9520
来自专栏BestSDK

一个“爆款”成功的API,都离不开这8条设计准则

我已经看过很多API设计相关的文章和优秀的REST API设计教程。他们通常讨论的是适当的编码技巧和如何在给定的语言中暴露接口。尽管那些是很有用也是很需要的,但...

38970
来自专栏Spark学习技巧

Redis 的各项功能解决了哪些问题?

综上所述,Redis提供了丰富的功能,初次见到可能会感觉眼花缭乱,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面从零开始,一步一...

12220
来自专栏架构师之路

90行代码,搞定日志监控框架

上一篇《100行代码,搞定http监控框架》介绍了通用+可扩展的http监控平台的架构: 监控平台层:调度监控项,通过后台管理监控项 信息管理层:通过服务和后台...

1K70
来自专栏大数据

Scrapy递归抓取简书用户信息

好久没有录制实战教程视频,大邓就在圣诞节后直接上干货。 之前写过一期【视频教程-用python批量抓取简书用户信息】的文章,是自己造的轮子,今天我趁着刚入门sc...

29470
来自专栏张戈的专栏

给XFN链接关系加上“nofollow”选项

今天无意间查询了一下友情链接,发现了俺的反链有部分被加上了“nofollow”属性,查了下资料: ....它的出现为网站管理员提供了一种方式,即告诉搜索引擎"不...

35370
来自专栏JAVA高级架构开发

Redis 的各项功能解决了哪些问题?

Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lis...

11100

扫码关注云+社区

领取腾讯云代金券