铜仁市论坛

首页 » 分类 » 问答 » 互联网大数据采集的爬虫策略问题
TUhjnbcbe - 2021/1/5 9:19:00

网络爬虫尽管存在一些争议,它已经成为大数据时代必不可少的数据采集手段之一(除此以外,在Web安全监测等许多方面都有广泛应用,以后慢慢讲,也可以参考我编著的《互联网大数据处理技术与应用》一书第二章)。

网络爬虫通过模拟人们在浏览Web页面时的点击行为来实现页面内容的采集,其主要目的是在尽可能短的时间内、用尽可能少的资源消耗采集到尽可能多的不同页面。

试想这样的问题,你打开浏览器,按一种什么样的方式浏览才能在一定时间内,浏览尽可能多的页面(不能重复),还有一个条件是不要太烧脑(记忆的东西尽量少)。

在面对大量页面时,按照什么的顺序或策略来采集页面尤为重要,对于网络爬虫采集页面而言,爬行策略是解决的这个问题的核心技术之一。

抽象化是解决很多复杂问题的方法,同样我们可以把复杂的页面内容及页面之间的链接抽象成为一张图,忽略页面中复杂的结构和内容,只考虑超链接。如图所示,圆圈表示一个页面,带箭头的线表示一个页面包含指向另一个页面的超链接。

抽象化的目的是为了将问题归结为现有的理论或方法所能解决的,从这里可以看出浏览每个节点(页面)是一个图的遍历问题。有两种遍历方法,即宽度优先和深度优先的遍历方法和结果,相信计算机或数学相关专业的学生都可以写出来。

宽度优先:abcdgefhi

深度优先:abcgfhied

为了解决烧脑问题,必须有合适的数据结构来存储需要等待访问的页面,避免这些页面数量太大,导致大脑溢出。

按照宽度优先的策略,我们可以使用队列作为存储结构。下面是遍历上述页面集时当前队列中的页面(下图中黑体字符表示)变化,红色字符的顺序就是宽度优先遍历的节点顺序。

按照深度优先的策略,就不能使用队列了,需要采用堆栈。下面是遍历上述页面集时栈中的页面的变化情况。

可以看出,不同的策略必须选择合适的逻辑结构,才能解决前面提到的问题。当然,这些策略还存在很多可以优化的地方,例如结合PR值、考虑爬虫的网络连接消耗以及对服务端所造成的影响等等,总之一个好的爬虫需要不断地结合Web页面链接的一些特征来进行优化调整。

虽然现在Python之类开发工具提供了集成度很高的函数可以快速实现爬虫,但是在爬虫性能优化方面就难于展开。因此,深入理解爬虫的技术原理对于设计高性能爬虫尤为重要。爬虫技术原理和实现方法是《互联网大数据处理技术与应用》一书(曾剑平编著,清华大学出版社,)的特色,本书并不满足于现有很多教材只是实现爬虫系统的模式,而是从更深层次分析爬虫的技术原理、体系架构,并针对普通Web页面爬虫、DeepWeb爬虫、动态页面爬虫、主题爬虫等各种典型的爬虫进行全面阐述,同时也涵盖了各种反爬虫技术。

此外,在这方面持续的研究和探索,我们研究小组积累了一些前瞻性技术,拥有爬虫连接优化管理、Web服务器反爬虫最佳策略选择等专利技术,欢迎联系。

1
查看完整版本: 互联网大数据采集的爬虫策略问题