首页 > 编程知识 正文

通用的爬虫架构,网络爬虫技术介绍

时间:2023-05-06 14:00:53 阅读:160543 作者:1022

1 )、Scrapy:

使用Scrapy,Python开发的快速、高级屏幕快照和web捕获框架,捕获网站并从页面中提取结构化数据。 Scrapy用途广泛,可用于数据挖掘、监测、自动化测试。

Scrapy的吸引人之处在于它是一个框架,任何人都可以根据自己的需要轻松修改它。 它还提供了各种类型爬行动物的基类,包括BaseSpider和sitemap爬行动物,最新版本还提供了web2.0爬行动物支持。

Scrap是碎片的意思,这个Python的爬虫框架被称为Scrapy。

优点:

1 .极其灵活定制攀登。

2 .社区人数多,文档充实。

3 .通过URL重新采用布隆过滤器计划。

4 .能够处理不完整的HTML,Scrapy已经提供了selectors (基于HTML提供更高级的接口)。

可以有效处理不完整的HTML代码。

坏处:

1 .对新学生不亲切,需要一定的初学者时间

) 2、Pyspider:

pyspider是一个用python实现的强大的网络爬虫系统,通过浏览器界面编写脚本、调度功能和实时显示爬网结果,利用后端常用的数据库存储爬网结果、任务和任务

优点:

1 .支持分布式部署。

2 .完全可视化,对用户非常友好: WEB界面编写调试脚本,停止脚本,监控运行状态,查看活动历史记录,获取结果产出。

3 .很简单,五分钟就能拿到。 脚本规则简单,开发效率高。 支持捕获JavaScript页面。

总之,Pyspider非常强大,像产品而不是框架一样强大。

坏处:

1 .如果在URL中重用数据库而不是布隆过滤器,则存储数以亿计的db io会导致效率急剧下降。

2 .使用人性化牺牲灵活性,定制能力下降。

)3) Apache Nutch (高大上) )。

Nutch是为搜索引擎设计的爬虫类,大部分用户都是需要获取(精确提取)准确数据的爬虫类,在Nutch执行的一系列过程中,三分之二是为搜索引擎设计的。

运行Nutch这个框架需要Hadoop,Hadoop需要建立集群。 对想早点入门爬虫类的我来说很佩服…

有些资源地址记载在这里,接下来可能会学习。

1.Nutch支持分布式捕获,并支持Hadoop,可实现多台计算机的分布式捕获、存储和索引。 此外,它还提供了一个插件框架,可以轻松扩展分析各种网页内容、收集各种数据、查询、集群和过滤等功能。 有了这个框架,Nutch插件的开发变得非常容易,第三方插件也层出不穷,Nutch的功能和声誉得到了很大的提高。

缺点

1.Nutch对爬行动物定制能力较弱

) 4、网络杂志

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 .用于优化性能的时间很少。

相对于Nutch,Heritrix只是爬虫工具,不提供搜索引擎。 要对捕获的站点进行排序,必须实现复杂的算法,如Pagerank。

(7)、Crawler4j

Crawler4j是一个基于Java的轻量级开源爬虫框架

好处

1 .多线程收集

2 .并入有URL过滤机制,使用BerkeleyDB进行URL过滤。

3 .可扩展至支持结构化提取的网页字段,可用于垂直收集

缺点

1.不支持动态网页抓取,例如网页的ajax部分

2.不支持分布式采集,可以考虑将其作为分布式爬虫的一部分,客户端采集部分

为了更加直观这7种爬虫框架,小编做了一个框架优缺点对比图,如下:

Jsoup(经典·适合静态网友)

这个框架堪称经典,也是我们暑期实训老师讲解的框架。有近乎完整的文档介绍。

和HtmlUnit同样,只能get到静态内容。

不过,这个框架有个有个优点,具有很强大的解析网页的功能。

selenium(Google多名大佬参与开发)

感觉很厉害,实际真的很厉害,看官网以及其他人的介绍,说是真正模拟浏览器。GitHub1.4w+star,你没看错,上万了。但是我硬是没配好环境。入门Demo就是没法运行成功,所以就放弃了。

cdp4j(方便快捷,但是需要依赖谷歌浏览器)

使用前提:

安装Chrome浏览器,即可。

简单介绍:

HtmlUnit的优点在于,可以方便的爬取静态网友;缺点在于,只能爬取静态网页。

selenium的优点在于,可以爬取渲染后的网页;缺点在于,需要配环境变量等等。

将二者整合,取长补短,就有了cdp4j。

之所以选用它,是因为真的方便好用,而且官方文档详细,Demo程序基本都能跑起来,类名起的见名知意。想当年学软件工程的时候,一直在纳闷,为什么要写文档啊,我程序能实现功能不就得了?现如今,看着如此详实的文档,留下了激动而又悔恨的泪水…

cdp4j有很多功能:

a. 获得渲染后的网页源码

b. 模拟浏览器点击事件

c. 下载网页上可以下载的文件

d. 对网页进行截屏或转PDF打印

e. 等等

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。