WebCollector 2.x 版本--------【Java】

  • 官方网站:https://github.com/CrawlScript/WebCollector
  • 是否支持分布式:该框架同时包含了单机版和分布式版两个版本
  • 可扩展性:强
  • 适用性:WebCollector适用于精抽取业务。
  • 上手难易度:简单

 

WebCollector 2.x 版本的 tutorial(教程) (2.20以上) 2.x版本特性:

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

 

实战(来自官方教程,该博文仅是本人为了更方便学习)

实际使用时建议按照 DemoTypeCrawler的方式操作,该教程目的为阐述 meta的原理;
	 * 可以往 CrawlDatums 中添加希望后续爬取的任务,任务可以是 URL 或者 CrawlDatum爬虫不会重复爬取任务;
	 * 从 2.20版之后,爬虫根据 CrawlDatum的key去重,而不是URL;
	 * 因此如果希望重复爬取某个URL,只要将 CrawlDatum 的 key 设置为一个历史中不存在的值即可;
	 * 例如增量爬取,可以使用 爬取时间+URL作为key;
	 * 新版本中,可以直接通过 page.select(css选择器)方法来抽取网页中的信息;
	 * 等价于page.getDoc().select(css选择器)方法,page.getDoc()获取到的是Jsoup中的Document对象;

 

解析meta

1、meta 是 CrawlDatum 的附加信息,爬虫内核并不使用 meta 信息;
2、在解析页面时,往往需要知道当前页面的类型(例如是标签页、列表页、内容页)
或一些附加信息(例如页号);
3、然而根据当前页面的信息(内容和URL)并不一定能够轻易得到这些信息;
4、例如当在解析页面 https://book.douban.com/tag/时,需要知道该页是目录页还是内容页;
5、虽然用正则也可以解决这个问题,但是相比之下使用 meta会更加快捷;
6、当我们将一个新链接(CrawlDatum)提交给爬虫时,链接指向页面的类型有时是确定的;
(例如在很多任务中,种子页面就是列表页)
7、如果在提交CrawlDatum时,直接将链接的类型信息(type)存放到meta中;
8、那么在解析页面时,只需取出链接(CrawlDatum)中的类型信息(type)即可知道当前页面类型

 

解析autoParse:

为指定 autoParse 参数时,父类默认为true ,即会自动解析页面中的所有超链接
因为没有使用 crawler.addRegex()正则匹配,所以为true也不会影响,等同于手动

 

分解代码:

visit(Page page, CrawlDatums next):

 

main(String[] args):

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值