抓取ajax动态网页java(爬虫、常见爬虫框架、优缺点框架有哪些种类?(一) )
优采云 发布时间: 2022-01-16 17:06抓取ajax动态网页java(爬虫、常见爬虫框架、优缺点框架有哪些种类?(一)
)
“你写爬虫的时候用的是什么框架,为什么选择这个框架?” 考官经常问。
今天小编总结了爬虫的优缺点、常用爬虫框架、爬虫框架:
1),什么是爬虫?
爬虫是按照一定的规则自动爬取各种网页信息的程序或脚本
2),爬虫是怎么组成的?
在网络爬虫的系统框架中,主要流程由控制器、解析器和资源库三部分组成。
1) 控制器的主要工作是为多个线程中的每个爬虫线程分配工作任务。
2),解析器的主要工作是下载网页并处理页面,主要是处理一些JS脚本标签、CSS代码内容、空格字符、HTML标签等。爬虫的基本工作是使用解析器完成。
3),资源库用于存放下载的web资源。一般使用Oracle数据库等大型数据库对其进行存储和索引。
3)、常见的爬虫框架有哪些?
根据语言,列出比较常见的爬虫框架:
Python中有Scrapy和Pyspider;
Java中有Nutch、WebMagic、WebCollector、heritrix3、Crawler4j
不同的框架
4),这些框架的优缺点是什么?
(1), Scrapy:
Scrapy,一个用 Python 开发的快速、高级的屏幕抓取和网页抓取框架,用于抓取网站并从页面中提取结构化数据。Scrapy 用途广泛,可用于数据挖掘、监控和自动化测试。
Scrapy 的吸引力在于它是一个任何人都可以根据自己的需要轻松修改的框架。还提供了各类爬虫的基类,如BaseSpider、sitemap爬虫等。最新版本提供了对web2.0爬虫的支持。
报废意味着碎片化。这个 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),纳奇
Nutch 是为搜索引擎设计的爬虫。大多数用户需要一个爬虫来进行准确的数据爬取(精细提取)。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个爬虫框架更加直观,小编做了一个框架优缺点对比图,如下: