java爬虫抓取网页数据(主流java爬虫框架有哪些?(1)框架)
优采云 发布时间: 2022-03-12 07:02java爬虫抓取网页数据(主流java爬虫框架有哪些?(1)框架)
文字
一、目前主流的java爬虫框架包括
Python中有Scrapy和Pyspider;
Java 有 Nutch、WebMagic、WebCollector、heritrix3、Crawler4j
这些框架的优缺点是什么?
(1), Scrapy:
Scrapy,一个用 Python 开发的快速、高级的屏幕抓取和网页抓取框架,用于抓取网站并从页面中提取结构化数据。 Scrapy 用途广泛,可用于数据挖掘、监控和自动化测试。
Scrapy 的吸引力在于它是一个任何人都可以根据自己的需要轻松修改的框架。还提供了各种爬虫的基类,如BaseSpider、sitemap爬虫等。最新版本提供了对web2.0爬虫的支持。
Scrap 意味着碎片化。这个 Python 爬虫框架叫做 Scrapy。
优点:
1.极其灵活的自定义抓取。
2.社区比较大,文档比较齐全。
3.URL去重采用Bloom filter方案。
4.可以处理不完整的HTML,Scrapy已经提供了选择器(基于lxml的更高级的接口),
可以有效地处理不完整的 HTML 代码。
缺点:
1.对新生不友好,需要一定的新手期
(2), Pyspider:
pyspider 是一个用python实现的强大的网络爬虫系统。它可以在浏览器界面上实时编写脚本、调度函数和查看爬取结果。后端使用通用数据库来爬取结果。它还可以定期设置任务和任务优先级。
优点:
1.支持分布式部署。
2.完全可视化,非常人性化:WEB界面编写调试脚本,启动和停止脚本,监控执行状态,查看活动历史,获取结果。
3.五分钟即可轻松上手。脚本规则简单,开发效率高。支持抓取 JavaScript 页面。
简而言之,Pyspider 非常强大,比框架更强大。
缺点:
1.URL去重使用数据库而不是Bloom过滤器,十亿级存储的db io会导致效率急剧下降。
2.使用的人性化牺牲了灵活性,降低了定制能力。
(3)Apache Nutch(高)
Nutch 是专为搜索引擎设计的爬虫。大多数用户需要一个爬虫来进行准确的数据爬取(精细提取)。 Nutch 运行的三分之二的流程是为搜索引擎设计的。 .
Nutch 框架需要 Hadoop 运行,Hadoop 需要开启集群。我不希望快速开始使用爬虫...
这里列出了一些资源地址,以后可能会学到。
Nutch 官网
1.Nutch 支持分布式爬取,拥有Hadoop 支持多机分布式爬取、存储和索引。另一个非常吸引人的地方是它提供了一个插件框架,可以很容易地扩展它的功能,例如解析各种网页内容、采集、查询、聚类、过滤各种数据。因为这个框架,Nutch的插件开发非常容易,第三方插件层出不穷,大大提升了Nutch的功能和知名度。
缺点
1.Nutch的爬虫定制能力比较弱
(4), WebMagic
WebMagic 是一个简单灵活的 Java 爬虫框架。基于WebMagic,您可以快速开发一个高效且易于维护的爬虫。
优点:
1.简单的API,快速上手
2.模块化结构,方便扩展
3.多线程和分布式支持
缺点:
1.不支持JS页面爬取
(5), 网络采集器
WebCollector是一个无需配置,方便二次开发的JAVA爬虫框架(内核)。它提供了精简的API,只需少量代码即可实现强大的爬虫。 WebCollector-Hadoop 是 WebCollector 的 Hadoop 版本,支持分布式爬取。
优点:
1.根据文字密度自动提取网页文字
2.支持断点重爬
3.支持代理
缺点:
1.不支持分布式,只支持单机
2.无 URL 优先级调度
3.不是很活跃
(6), Heritrix3
Heritrix是java开发的开源网络爬虫,用户可以使用它从互联网上爬取想要的资源
优势
Heritrix 的爬虫有很多自定义参数
缺点
1.单实例爬虫无法合作。
2.机器资源有限的复杂操作。
3.仅官方支持,仅在 Linux 上测试。
4.每个爬虫单独工作,无需修改更新。
5.在发生硬件和系统故障时恢复能力很差。
6.优化性能的时间非常少。
7.相比Nutch,Heritrix只是一个爬虫工具,不提供搜索引擎。如果要对爬取的网站进行排名,就必须实现类似于Pagerank的复杂算法。
(7), Crawler4j
Crawler4j是一个基于Java的轻量级独立开源爬虫框架
优势
1.多线程采集
2.内置的Url过滤机制使用BerkeleyDB进行url过滤。
3.可扩展支持结构化提取网页字段,可作为垂直采集使用
缺点
1.不支持动态网页抓取,例如网页的 ajax 部分
2.不支持分布式采集,可以认为是分布式爬虫的一部分,客户端采集部分
为了让这7个爬虫框架更直观,小编做了一个框架优缺点对比图,如下:
Jsoup(经典,适合静态网友)
这个框架很经典,也是我们暑期培训老师讲解的框架。有一个近乎完整的文档介绍。
同HtmlUnit,只能获取静态内容。
不过,这个框架的优势在于解析网页非常强大。
Jsoup中文教程
selenium(多位谷歌领导参与开发)
感觉很棒,但实际上真的很棒。看官网和其他人的介绍,都说是真实的浏览器模拟。 GitHub1.4w+star,你没看错,上万。但我就是不适应环境。介绍Demo就是跑不成功,所以放弃了。
selenium 官方 GitHub
cdp4j(方便快捷,但需要依赖谷歌浏览器)
先决条件:
安装 Chrome 浏览器就完成了。
简介:
HtmlUnit的优点是可以轻松爬取静态网友;缺点是只能抓取静态网页。
selenium 的优点是可以爬取渲染好的网页;缺点是需要配置环境变量等。
两者结合,取长补短,就有了cdp4j。
之所以选择它,是因为它真的很方便好用,而且官方文档详细,Demo程序基本可以运行,类名熟悉。我想我在学习软件工程的时候一直在想,如果我的程序能实现这个功能,为什么还要写文档呢?现在,看着这么详细的文件,激动和遗憾的泪流满面……
cdp4j 有很多特点:
一个。获取渲染后的网页源代码
b.模拟浏览器点击事件
c。下载可以从网页下载的文件
d。截取网页截图或转换为 PDF 打印
e。等等
更详细的信息可以到以下三个地址去探索发现:
[cdp4j官网地址]
[Github 仓库]
[演示列表]
总结
上述框架各有优缺点。其中cdp4j方便,功能齐全,但我个人觉得唯一的缺点就是需要依赖谷歌浏览器。
以后打算用手动的方法:httpclient +jsoup+selenium实现java爬虫功能用httpclient爬取,jsoup解析页面,90%的页面可以做,剩下的用selenium;
参考链接: