加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

没有爬虫,就没有今天的搜索引擎

发布时间:2019-09-26 14:57:13 所属栏目:优化 来源:DataHunter
导读:副标题#e# 在如今信息化、数字化的时代,人们已经离不开网络搜索了,但细想一下,你在搜索过程中能够真正获得相关信息,是因为有人在帮你把与之相关的内容筛选和呈递到你面前了。 就像在饭店里,你点了土豆并且能吃到,是因为有人帮你在土豆、萝卜、西红柿

(3)在爬行过程中,会爬取到一些新的URL,此时,需要根据所定的主题使用链接过滤模块过滤掉无关链接,再将剩下来的URL链接根据主题使用链接评价模块或内容评价模块进行优先级的排序。完成后,将新的URL地址传递到URL队列中,供页面爬行模块使用;

(4)将页面爬取并存放到页面数据库后,需要根据主题使用页面分析模块对爬取到的页面进行页面分析处理,并根据处理结果建立索引数据库,用户检索对应信息时,可以从索引数据库中进行相应的检索,并得到对应的结果。

3.增量式网络爬虫

这里的“增量式”对应着增量式更新,增量式更新指的是在更新的时候只更新改变的地方,而未改变的地方则不更新。

增量式网络爬虫,在爬取网页的时候,只爬取内容发生变化的网页或者新产生的网页,对于未发生内容变化的网页,则不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面,尽可能是新页面。

4.深层网络爬虫

在互联网中,网页按存在方式分类可分为表层页面和深层页面。表层页面指的是不需要提交表单,使用静态的链接就能够到达的静态页面;而深层页面是需要提交一定的关键词之后才能够获取得到的页面。而在互联网中,深层页面的数量往往比表层页面的数量要多很多。

深层网络爬虫可以爬取互联网中的深层页面,爬取深层页面,需要想办法自动填写好对应表单。深层网络爬虫主要由URL列表、LVS列表(LVS指的是标签/数值集合,即填充表单的数据源)、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器等部分构成。

四、网络爬虫的爬取策略

在前面我们说过网络爬虫算法是根据人们施加的规则去采集信息,而由于网络复杂的环境,所以相应的也有各种不同算法,也就是爬取策略。这里我们主要介绍下爬取的顺序与频率。

1.爬取顺序

在网络爬虫爬取的过程中,在带爬取的URL列表中可能有很多URL地址,那么爬虫爬取这些URL地址就会有先后顺序。

相对于通用网络爬虫,爬取的顺序并不是那么重要。但聚焦网络爬虫,爬取的顺序与服务器资源和宽带资源有关,所以非常重要,一般由爬行策略决定。爬行策略主要有深度优先爬行策略、广度优先爬行策略、大站优先策略、反链策略、其他爬行策略等。

没有爬虫,就没有今天的搜索引擎

如图所示,假设有一个网站,ABCDEFG分别为站点下的网页,如图所示表示网页的层次结构。假如此时网页ABCDEFG都在爬行队列中,那么按照不同的爬行策略,其爬取的顺序是不同的。

深度优先爬行策略:A→D→E→B→C→F→G

广度优先爬行策略:A→B→C→D→E→F→G

除了以上两种爬行策略之外,还可以采用大站爬行策略。可以按对应网页所属的站点进行归类,如果某个网站的网页数量多,则将其称为大站,按照这种策略,网页数量越多的网站越大,然后,优先爬取大站中的网页URL地址。

另外还有反链策略,一个网页的反向链接数,指的是该网页被其他网页指向的次数,这个次数在一定程度上代表着该网页被其他网页的推荐次数。所以,如果按反链策略去爬行的话,那么哪个网页的反链数量越多,则哪个网页将被优先爬取。

但是在实际情况中,如果单纯按反链策略去决定一个网页的优先程度的话,那么可能会出现大量的作弊情况。所以采用反向链接策略需要考虑可靠的反链数。除了以上这些爬行策略,在实际中还有很多其他的爬行策略,比如OPIC策略、Partial PageRank策略等。

2.爬取频率

一个网站的网页是经常更新的,作为爬虫方,网站的更新频率与爬虫访问网站的频率越接近,则效果越好。当然,在爬虫服务器资源有限的情况下,爬虫也需要根据对应策略,让不同的网页具有不同的更新优先级,优先级高的网页更新,将获得较快的爬取响应。常见的网页更新策略主要有如下3种:

没有爬虫,就没有今天的搜索引擎

(1)用户体验策略:大部分用户在使用搜索引擎查询某个关键词的时候,只会关注排名靠前的网页,所以,在爬虫服务器资源有限的情况下,爬虫会优先更新排名结果靠前的网页。

(2)历史数据策略:指的是可以依据某一个网页的历史更新数据,通过泊松过程进行建模等手段,预测该网页下一次更新的时间,从而确定下一次对该网页爬取的时间。

(3)聚类分析策略:网页可能具有不同的内容,但是一般来说,具有类似属性的网页其更新频率类似,所以可以对海量的网页进行聚类分析,聚类完成后,可以依据同一个类型网页平均更新值来设定爬取的频率。

五、网络爬虫的实现技术

对于实现技术,本文不做展开,仅为有兴趣的同学提供几个常见的语言:Python、Java、PHP、Node.JS、C++、Go语言(此外,网络爬虫的开发语言还有很多)。

Python:爬虫框架非常丰富,并且多线程的处理能力较强,并且简单易学、代码简洁,优点很多。

Java:适合开发大型爬虫项目。

PHP:后端处理很强,代码很简洁,模块也较丰富,但是并发能力相对来说较弱。

Node.JS:支持高并发与多线程处理。

C++:运行速度快,适合开发大型爬虫项目,成本较高。

Go语言:同样高并发能力非常强。

六、小结

说到爬虫,很多人都认为它是网络世界中一个不可而为之的灰色地带。恭喜你,读完这篇文章,你对此的认知就超过了好多人。

因为爬虫分为善意爬虫和恶意爬虫,例如,搜索引擎的爬虫。善意爬虫严格遵守Robots协议规范爬取网页数据(如URL),它的存在能够增加网站的曝光度,给网站带来流量;

而恶意爬虫,它无视Robots协议,对网站中某些深层次的、不愿意公开的数据肆意爬取,其中不乏个人隐私或者商业秘密等重要信息。并且恶意爬虫的使用方希望从网站多次、大量的获取信息,所以其通常会向目标网站投放大量的爬虫。如果大量的爬虫在同一时间对网站进行访问,很容易导致网站服务器过载或崩溃,造成网站经营者的损失。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读