网上一搜 "JAVA爬虫框架有哪些",一般就会出现以下这几款: Apache Nutch 、 WebMagic 、 WebCollector 、 Heritrix3 、 Selenium
这些框架有哪些优缺点?
支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展,正是由于有此框架,使得 Nutch 的插件开发非常容易,第三方的插件也层出不穷,极大的增强了 Nutch 的功能和声誉。
缺点:定制能力较弱、同时社区活跃度较低,网上的资料大多都是几年前的资料。
1.基于文本密度的网页正文自动抽取
2.支持断点重爬
3.支持代理
缺点:
1.不支持分布式,只能单机
2.无URL优先级调度
3.活跃度不高
Heritrix的爬虫定制参数多
缺点
1.单实例的爬虫,之间不能进行合作。
2.在有限的机器资源的情况下,却要复杂的操作。
3.只有官方支持,仅仅在Linux上进行了测试。
4.每个爬虫是单独进行工作的,没有对更新进行修订。
5.在硬件和系统失败时,恢复能力很差。
6.很少的时间用来优化性能。
7.相对于Nutch,Heritrix仅仅只是一个爬虫工具,没有提供搜索引擎。如果要对抓取的站点排序必须要实现类似于Pagerank的复杂算法。
Selenium
在这之外 okhttp , httpUtil 也能实现基本的爬虫功能。
这里就使用我极力推荐的 Selenium 框架。 java环境肯定是需要的,然后这里使用的spring boot + maven。
访问百度
查询中秋节
获取中秋节百度百科链接
访问中秋节百度百科页面并获取对应信息
Selenium 是模拟真实用户对浏览器进行操作,所以需要安装对于的浏览器并且下载对应的驱动,这里使用最新版本的火狐浏览器
百度云下载链接:pan.baidu.com/s/1ugNF1l51… 提取码:zqkl
阿里云盘链接:www.aliyundrive.com/s/JjJZCfwGK…
具体流程在代码中写的有注释,其中要注意以下两点
1.由于只是需要访问中秋节百度百科一个页面所以直接取了下标为0的内容,偶尔访问报下标越界重新请求下,原因 是请求的时候页面没有完全加载出来就获取页面html代码,解决办法 在获取页面源码的时候线程休眠1秒。
2.注意指定浏览器驱动路径时是指定下载的驱动路径,而不是启动文件路径
作者:骑电动车的小黄
链接:https://juejin.cn/post/7005950194718408734
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。前言
网上一搜 "JAVA爬虫框架有哪些",一般就会出现以下这几款: Apache Nutch 、 WebMagic 、 WebCollector 、 Heritrix3 、 Selenium
这些框架有哪些优缺点?
支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展,正是由于有此框架,使得 Nutch 的插件开发非常容易,第三方的插件也层出不穷,极大的增强了 Nutch 的功能和声誉。
缺点:定制能力较弱、同时社区活跃度较低,网上的资料大多都是几年前的资料。
1.基于文本密度的网页正文自动抽取
2.支持断点重爬
3.支持代理
缺点:
1.不支持分布式,只能单机
2.无URL优先级调度
3.活跃度不高
Heritrix的爬虫定制参数多
缺点
1.单实例的爬虫,之间不能进行合作。
2.在有限的机器资源的情况下,却要复杂的操作。
3.只有官方支持,仅仅在Linux上进行了测试。
4.每个爬虫是单独进行工作的,没有对更新进行修订。
5.在硬件和系统失败时,恢复能力很差。
6.很少的时间用来优化性能。
7.相对于Nutch,Heritrix仅仅只是一个爬虫工具,没有提供搜索引擎。如果要对抓取的站点排序必须要实现类似于Pagerank的复杂算法。
Selenium
在这之外 okhttp , httpUtil 也能实现基本的爬虫功能。
这里就使用我极力推荐的 Selenium 框架。 java环境肯定是需要的,然后这里使用的spring boot + maven。
访问百度
查询中秋节
获取中秋节百度百科链接
访问中秋节百度百科页面并获取对应信息
Selenium 是模拟真实用户对浏览器进行操作,所以需要安装对于的浏览器并且下载对应的驱动,这里使用最新版本的火狐浏览器
百度云下载链接:pan.baidu.com/s/1ugNF1l51… 提取码:zqkl
阿里云盘链接:www.aliyundrive.com/s/JjJZCfwGK…
具体流程在代码中写的有注释,其中要注意以下两点
1.由于只是需要访问中秋节百度百科一个页面所以直接取了下标为0的内容,偶尔访问报下标越界重新请求下,原因 是请求的时候页面没有完全加载出来就获取页面html代码,解决办法 在获取页面源码的时候线程休眠1秒。
2.注意指定浏览器驱动路径时是指定下载的驱动路径,而不是启动文件路径
评论留言