java爬虫抓取动态网页(Python开发的一个快速、高层次的优点及应用)
优采云 发布时间: 2022-04-12 15:30java爬虫抓取动态网页(Python开发的一个快速、高层次的优点及应用)
(1), Scrapy:
Scrapy,一个用 Python 开发的快速、高级的屏幕抓取和网页抓取框架,用于抓取网站并从页面中提取结构化数据。Scrapy 用途广泛,可用于数据挖掘、监控和自动化测试。
Scrapy 的吸引力在于它是一个任何人都可以根据自己的需要轻松修改的框架。还提供了各类爬虫的基类,如BaseSpider、站点地图爬虫等。最新版本提供了对web2.0爬虫的支持。
报废意味着碎片化。这个 Python 爬虫框架叫做 Scrapy。
优势:
1.极其灵活的自定义爬取。
2.社区比较大,文档比较齐全。
3.URL 去重采用布隆过滤器方案。
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需要开集群。我不希望快速开始使用爬虫...
这里列出了一些资源地址,也许他们以后会学习。
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 一样,只能获取静态内容。
不过,这个框架有一个优势,它具有非常强大的网页解析功能。
selenium(谷歌多个大佬参与开发)
感觉很厉害,其实很厉害。看了官网等的介绍,都说是真实的浏览器模拟。GitHub1.4w+star,你没看错,上万。但我就是不适应环境。介绍性的 Demo 就是无法成功运行,所以我放弃了。
cdp4j(方便快捷,但需要依赖谷歌浏览器)
使用先决条件:
安装 Chrome 浏览器就可以了。
简要介绍:
HtmlUnit的优点是可以轻松爬取静态网友;缺点是只能抓取静态网页。
selenium 的优点是可以爬取渲染好的网页;缺点是需要配置环境变量等。
将两者融合,取长补短,就有了cdp4j。
之所以选择它,是因为它真的很方便好用,而且官方文档很详细,Demo程序基本可以运行,类名也很熟悉。我想我在学习软件工程的时候一直在想,如果我的程序能实现这个功能,为什么还要写文档呢?现在,看着如此详尽的文件,留下了激动和遗憾的泪水……
cdp4j 有很多特点:
一种。获取渲染后的网页源代码
湾。模拟浏览器点击事件
C。下载可以在网页上下载的文件
d。截取网页截图或转换为 PDF 进行打印
e. 等待
更详细的信息可以到以下三个地址去探索发现: