网络爬虫基本原理

合集下载

网络爬虫 工作原理

网络爬虫 工作原理

网络爬虫工作原理
网络爬虫工作原理是通过自动化程序模拟浏览器行为,从互联网上搜集和提取信息的一种程序。

其基本步骤包括:
1. 确定爬取目标:确定要抓取的网页或网站。

2. 发送HTTP请求:模拟浏览器发送HTTP请求,向目标网站的服务器请求目标网页。

3. 获取响应内容:接收服务器返回的响应内容,包括HTML、XML、JSON等格式的数据。

4. 解析内容:使用HTML解析器或其他数据解析技术,将返
回的内容解析成结构化数据。

5. 提取数据:根据预定的规则和算法,从解析后的数据中提取需要的信息。

6. 存储数据:将提取到的数据保存到数据库、文本文件或其他存储介质中。

7. 定期更新:通过设置循环和定时任务,定期执行上述步骤,实现数据的更新和持续抓取。

需要注意的是,网络爬虫应该遵守互联网规范和法律法规,遵守网站的爬虫协议,并具备一定的限制机制,以避免对目标网站造成过大的访问负载或隐私泄露等问题。

网络爬虫的基本原理

网络爬虫的基本原理

网络爬虫的基本原理网络爬虫,指的是自动地从互联网上下载网页,并从中提取信息的程序。

在当今信息时代,越来越多的人开始关注网络爬虫的基本原理,因为它不仅能够满足人们获取信息的需求,同时也能够加速数据的收集和处理,为科学研究提供必要的支持。

网络爬虫的基本原理包括以下几个方面:一、HTTP协议HTTP协议是网络爬虫工作的基础,也是网络上最为广泛使用的协议之一。

该协议定义了客户端和服务器之间进行数据传输的规则,它由请求报文和响应报文两部分组成。

爬虫程序通过模拟HTTP请求的方式,向目标服务器发送请求报文,获取响应报文中的数据,从而实现自动采集数据的目的。

在此过程中,爬虫程序需要遵循HTTP协议中的相关规则,保证数据的获取和处理过程稳定可靠。

二、URL管理网络爬虫需要从互联网上下载大量的网页,如何管理URL是这一过程中必须要考虑的问题。

URL管理的主要任务是确保各个网页之间的顺序和优先级,避免重复下载和浪费带宽。

一般来说,网络爬虫会将已经下载过的网页保存到数据库中,并能够识别这些网页中所包含的URL链接。

当新的URL链接出现时,爬虫程序会判断是否为有效链接,如果是,则将其添加到待采集队列中,提交给下载器进行下载。

三、下载器下载器是网络爬虫实现自动采集数据的关键组件之一。

它通过构造HTTP请求报文,向目标服务器发送请求,获取响应报文中的数据,并将其保存到本地文件中。

目前市面上有很多成熟的下载器实现,如Apache HttpClient、Requests、urllib等,它们都提供了简单易用的API接口,可以方便地实现各种类型数据的下载。

当然,开发者也可以自己编写下载器实现,以满足自己的特定需求。

四、数据解析数据解析是网络爬虫最为重要的工作之一,它决定了所采集数据的正确性和完整性。

在数据解析过程中,爬虫程序需要获取目标网页中的标签、链接、文本等信息,通过解析和提取这些信息,得到有用的数据。

目前,常用的数据解析方式有正则表达式、XPath、CSS选择器等,这些解析技术能够准确地识别页面结构中的各种信息,提取出我们所需要的数据。

网络爬虫的基本原理

网络爬虫的基本原理

⽹络爬⾍的基本原理1、⽹络爬⾍原理⽹络爬⾍指按照⼀定的规则(模拟⼈⼯登录⽹页的⽅式),⾃动抓取⽹络上的程序。

简单的说,就是讲你上⽹所看到页⾯上的内容获取下来,并进⾏存储。

⽹络爬⾍的爬⾏策略分为深度优先和⼴度优先。

如下图是深度优先的⼀种遍历⽅式是A到B到D 到E 到C到 F(ABDECF)⽽宽度优先的遍历⽅式ABCDEF 。

2、写⽹络爬⾍的原因我将为什么写⽹络爬⾍的原因总结为3点,分别是:(1)互联⽹中的数据量⼤,我们不能⼈⼯的去收集数据,这样会很浪费时间与⾦钱。

⽽爬⾍有个特点就是能批量、⾃动化的获取和处理数据。

本⼈写过各⼤汽车论坛上的爬⾍以及⼤众点评⽹,tripadvisor(国外⽹站)的爬⾍,爬取的数据已有⼏千万之多,可想你如果⼀条条去复制,到⽼死也完不成吧。

(2)爬⾍很酷。

前段⽇⼦,看到有⼈利⽤爬到了腾讯3000万QQ数据,包含(QQ号,昵称,空间名称,会员级别,头像,最新⼀条说说内容,最新说说的发表时间,空间简介,性别,⽣⽇,所在省份,城市,婚姻状况)的详细数据,并绘制了各种有趣的图表。

(3)对于读研、读博,做数据挖掘、数据分析的⼈⽽⾔,没有数据做实验,是⼀件很蛋疼的事情。

你可能每天在各种论坛问这个问那个要数据,是不是很烦呢。

3、⽹络爬⾍的流程简单的⽹络爬⾍,通过上述图便可完成。

⾸先是给定⼀个待爬取的URL队列,然后通过抓包的⽅式,获取数据的真实请求地址。

接着采⽤httpclient模拟浏览器将相应的数据抓取下来(⼀般是html⽂件或者是json数据)。

由于⽹页中的内容很多,很复杂,很多内容并不是我们需要的,所以我们需要对其进⾏解析。

针对html的解析很简单,通过Jsoup(Dom解析⼯具)、正则表达式便可完成。

针对Json数据的解析,这⾥我建议⼀款快速解析⼯具fastjson(阿⾥开源的⼀个⼯具)4、⽹络抓包⽹络抓包,(packet capture)就是将⽹络传输发送与接收的数据包进⾏截获、重发、编辑、转存等操作,经常被⽤来进⾏数据截取等。

Python网络爬虫实践教程

Python网络爬虫实践教程

Python网络爬虫实践教程一、什么是网络爬虫网络爬虫,也称为网络蜘蛛或网络机器人,是一种自动获取互联网信息的程序工具。

通过模拟浏览器行为,爬虫程序可以访问网页、提取网页中的数据,在大规模数据采集、搜索引擎、数据分析等领域发挥着重要作用。

二、网络爬虫的基本原理网络爬虫的基本原理是通过发送HTTP请求,并解析响应得到的HTML文档来获取网页数据。

首先,我们需要使用Python中的requests库发送网络请求,并获得服务器的响应。

然后,通过解析HTML文档,提取出我们需要的数据。

三、准备工作在开始编写网络爬虫之前,我们需要安装Python以及相关的库。

首先,需要安装Python解释器和pip包管理工具。

然后,使用pip安装requests、beautifulsoup和lxml等库。

四、发送HTTP请求在编写爬虫程序之前,我们需要了解如何使用Python发送HTTP请求。

使用requests库发送GET请求非常简单,只需要调用get方法,并提供目标网址即可。

如果需要发送POST请求,同样使用post方法,并在参数中传递需要提交的数据。

五、解析HTML文档解析HTML文档是爬虫中非常重要的一步。

Python提供了多种解析HTML的库,其中比较常用的是beautifulsoup和lxml。

通过指定解析器,我们可以轻松地提取出HTML文档中的各个元素,并进行进一步的处理。

六、处理反爬机制为了阻止爬虫程序的访问,许多网站采取了反爬机制,例如设置验证码、限制IP访问频率等。

对于这些反爬措施,我们可以通过使用代理IP、设置请求头信息、使用验证码识别技术等方法来绕过。

七、数据存储与分析在爬虫过程中,我们通常需要将获取的数据进行存储和分析。

常用的数据存储方式包括将数据保存到数据库、文本文件、Excel 表格或者CSV文件中。

而要对数据进行分析,可以使用Python中的数据分析库,如pandas、numpy等。

八、实践案例:爬取豆瓣电影数据为了更好地理解网络爬虫的实践过程,我们以爬取豆瓣电影数据为例进行讲解。

Python网络爬虫的基本原理和流程

Python网络爬虫的基本原理和流程

Python网络爬虫的基本原理和流程Python网络爬虫是一种自动化程序,用于从互联网上提取数据。

它可以模拟真实用户的行为,访问网页并抓取所需的信息。

网络爬虫在各个领域具有广泛的应用,如数据挖掘、搜索引擎优化和业务数据分析等。

本文将介绍Python网络爬虫的基本原理和流程。

一、爬虫的基本原理网络爬虫的基本原理是通过HTTP协议发送请求,获取网页内容,然后提取所需的数据。

Python提供了一些强大的库和工具,可以简化爬虫的开发过程。

1. 发送请求使用Python的模块,如Requests或Scrapy,可以发送HTTP请求并获取响应。

通过GET或POST方法,可以向指定的URL发送请求,并获得服务器返回的响应。

2. 解析HTML获取到页面的HTML源代码后,需要通过解析HTML来抓取所需的数据。

常用的HTML解析库包括BeautifulSoup和lxml等。

这些库可以根据HTML标签和其他特征来提取所需的数据。

3. 数据提取在解析HTML的基础上,可以使用CSS选择器或XPath表达式来定位和提取特定的数据。

这些工具提供了灵活的方式来选择DOM元素,并获取其对应的值。

4. 数据存储一旦获取了所需的数据,可以将其存储到数据库或文件中。

Python提供了各种数据库和文件处理的库,如MySQL、MongoDB和CSV等。

二、爬虫的基本流程Python网络爬虫的基本流程包括以下几个步骤:1. 发送请求使用Python的Requests库,通过GET或POST方法向目标网站发送请求。

可以设置请求头部信息,模拟真实用户的行为。

2. 获取响应收到服务器的响应后,可以获取页面的HTML源码。

通过解码和解析HTML,可以获取页面中的各种元素和数据。

3. 解析HTML使用合适的HTML解析库,如BeautifulSoup或lxml,解析HTML源码,并根据预先定义好的规则提取所需的数据。

4. 数据提取通过CSS选择器或XPath表达式,定位和提取特定的数据。

网络爬虫的基本原理和编程实现

网络爬虫的基本原理和编程实现

网络爬虫的基本原理和编程实现引言:随着互联网的发展,网站中包含的信息日益庞大,人们需要从海量数据中获取有用的信息变得越来越困难。

而网络爬虫作为一种特殊的程序,可以自动化地从互联网上收集数据,并对这些数据进行分析和处理,为人们提供更多有用的信息。

本文将介绍网络爬虫的基本原理和编程实现。

一、网络爬虫的基本原理1. 爬虫的定义:网络爬虫是一种按照指定规则自动地抓取互联网信息的程序。

2. 工作原理:网络爬虫通过HTTP协议发送请求,获取网页的内容,然后对网页进行解析和处理,提取出有用的信息,并将其保存或进行进一步的分析。

二、网络爬虫的编程实现1. 环境准备:a. 安装Python开发环境b. 安装相关的第三方库(如requests、beautifulsoup、scrapy等)2. 发送HTTP请求:a. 使用requests库发送HTTP请求,获得网页的内容。

b. 设置请求头部的User-Agent字段,模拟浏览器的行为,避免被网站识别为爬虫并禁止访问。

3. 解析网页:a. 使用beautifulsoup库解析HTML文档,提取出网页中的有用信息。

b. 根据网页的结构和标签,使用CSS选择器或XPath语法进行元素的定位和提取。

4. 数据的存储和处理:a. 使用Python的文件操作功能,将爬取的数据保存到本地文件或数据库中。

b. 对爬取的数据进行清洗和处理,去除重复的或无用的信息。

5. 增加爬虫的健壮性:a. 设置合理的请求频率,避免对目标网站造成过大的访问压力。

b. 处理网站的反爬虫机制,如验证码、限制IP访问等。

c. 使用代理IP,轮换访问网站,提高抓取的成功率。

三、网络爬虫的应用领域1. 数据采集:爬虫可以通过抓取网页上的数据,形成结构化的数据,用于研究和分析。

2. 搜索引擎:搜索引擎利用爬虫程序收集互联网上的信息,建立索引并提供搜索服务。

3. 舆情监测:通过监测社交媒体、论坛等网站的信息,了解公众对某一事件或话题的态度和意见。

爬虫的原理

爬虫的原理

爬虫的原理
爬虫,又称网络爬虫,是一种按照一定的规则,自动地抓取互联网信息的程序或脚本。

爬虫的原理主要包括以下几个方面,网页抓取、网页解析、数据存储和更新等。

首先,爬虫的原理之一是网页抓取。

爬虫程序通过发送HTTP请求,获取网页的HTML源代码。

在发送请求的过程中,爬虫需要模拟浏览器的行为,包括发送请求头、处理Cookie等,以便获取完整的网页内容。

在获取网页内容后,爬虫需要对网页进行解析。

其次,爬虫需要进行网页解析。

网页解析是指对获取的HTML源代码进行解析和提取有用信息的过程。

爬虫程序可以利用正则表达式、XPath、CSS选择器等技术,从HTML源代码中提取出需要的数据,如链接、文本、图片等。

解析完网页后,爬虫需要将提取的数据进行存储。

然后,爬虫需要进行数据存储和更新。

爬虫程序通常会将抓取到的数据存储到数据库或者本地文件中,以便后续的数据分析和处理。

同时,爬虫还需要定期更新已经抓取的数据,以保证数据的及时性和准确性。

除了以上几个主要的原理外,爬虫还需要考虑一些其他的问题。

比如,爬虫需要处理网页的反爬机制,避免被网站封禁IP或者账号。

此外,爬虫还需要考虑并发抓取、分布式部署、数据去重等问题,以提高抓取效率和数据质量。

总的来说,爬虫的原理主要包括网页抓取、网页解析、数据存储和更新等几个方面。

通过对这些原理的深入理解,可以帮助开发者更好地设计和实现爬虫程序,从而更高效地抓取和处理互联网上的海量数据。

基于Python的网络爬虫技术综述

基于Python的网络爬虫技术综述

基于Python的网络爬虫技术综述随着互联网的发展,网络上的信息量呈爆炸式增长,每天都有海量的数据在互联网上产生。

这些数据包含了丰富的信息,对于企业、学术研究、个人等各个领域都有重要的参考价值。

要想获取这些数据并加以利用,就需要一种有效的手段来收集网络上的信息。

网络爬虫(Web Crawler)技术应运而生,它是自动化地获取互联网上信息的一种技术手段。

一、网络爬虫技术原理网络爬虫技术主要是通过编程的方式,模拟浏览器行为,访问网络上的页面,获取页面的内容并进行解析,从而实现自动化获取信息的过程。

其主要原理包括:1. 发起请求:网络爬虫首先需要向目标网站发起HTTP请求,请求特定的网页内容。

2. 获取响应:目标网站接收到请求后,会返回相应的HTML页面内容。

3. 解析页面:爬虫需要解析HTML页面,从中提取出所需信息,如文本、图片、链接等。

4. 存储数据:爬虫将解析出的数据存储到本地数据库或文件中,以便后续分析使用。

二、基于Python的网络爬虫常用库在Python中,有许多成熟的第三方库可供使用,极大地简化了网络爬虫的开发过程。

以下几个库是网络爬虫常用的:1. requests:用于发送HTTP请求,并获取响应内容的库,是网络爬虫的基础库。

2. BeautifulSoup:用于解析HTML页面内容的库,能够方便地提取出页面中的各种信息。

3. Scrapy:一个功能强大的网络爬虫框架,提供了完整的爬虫开发工具,包括URL管理、数据存储、页面解析等功能。

4. Selenium:用于模拟浏览器操作的库,可以实现动态页面的爬取。

5. PyQuery:类似于jQuery的库,提供了类似于jQuery的操作方式,便于解析HTML 页面。

这些库的出现大大简化了网络爬虫的开发工作,使得爬虫开发者能够专注于业务逻辑的实现,而不必关心底层的网络请求和页面解析过程。

基于Python的网络爬虫一般可以分为以下几个步骤:4. 遍历链接:对于需要爬取多个页面的情况,需要遍历页面中的链接,继续发起请求和解析页面的过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络爬虫基本原理
网络爬虫根据需求的不同分为不同种类:
1. 一种是爬取网页,通过url得到这个html页面中指定的,把这些存储起来,
再依次以这些为源,再次爬取指向html页面中的……如此层层递归下去,常用的方法是广度优先或者深度优先,根据爬取层次需求不同而选择不同的方法达到最优效果,爬虫的效率优化是一个关键。

搜索引擎的第一个步骤就是通过爬虫得到需要索引的或数据,存放于数据库,然后对这些数据建立索引,然后定义查询语句,解析查询语句并利用检索器对数据库里的数据进行检索。

2. 一种是爬取数据信息,如文本信息、图片信息等,有时需要做数据分析,通
过某种手段来获取数据样本以供后续分析,常用的方法是爬虫获取指定数据样本或利用现有的公共数据库。

本文的微博爬虫和新闻数据爬取都属于第二种类,根据自定义搜索关键字爬取微博信息数据。

3. 对于网络爬虫原理,其实并不复杂。

基本思路是:由关键字指定的url把所
有相关的html页面全抓下来(html即为字符串),然后解析html文本(通常是正则表达式或者现成工具包如jsoup),提取微博文本信息,然后把文本信息存储起来。

重点在于对html页面源码结构的分析,不同的html需要不同的解析方法;还有就是长时间爬取可能对IP有影响,有时需要获取代理IP,甚至需要伪装浏览器爬取。

(主要是针对像新浪等这些具有反扒功能的,新闻一般不会有这样的情况)。

对于微博,通常情况下是必须登录才能看到微博信息数据(比如腾讯微博),但是有的微博有搜索机制,在非登录的情况下可以直接通过搜索话题来查找相关信息(如新浪微博、网易微博)。

考虑到某些反爬虫机制,如果一个账号总是爬取信息可能会有些影响(比如被封号),所以本文采用的爬虫都是非登录、直接进入微博搜索页面爬取。

这里关键是初始url地址。

网络爬虫是搜索引擎抓取系统的重要组成部分。

爬虫的主要目的是是将互联网上的网页下载到本地形成一个活互联网容的镜像备份。

这篇博客主要对爬虫及抓取系统进行一个简单的概述。

一、网络爬虫的基本结构及工作流程
通用的网络爬虫的框架如图所示:
网络爬虫框架图
网络爬虫的基本工作流程如下:
1.首先选取一部分精心挑选的种子URL;
2.将这些URL放入待抓取URL队列
3. 从待抓取URL队列中取出待抓取URL,解析DNS,并且得到主机的ip,并将URL 对应的网页下载下来,存储进已下载网页库中。

此外,将这些URL放进已抓取URL 队列。

4. 分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进行下一个循环。

二、从爬虫角度对互联网进行划分
可将互联网所有页面分为五个部分:
1. 已下载未过期网页
2. 已下载已过期网页:抓取到的网页实际上是互联网容的一个镜像与备份,
互联网是动态变化的,一部分互联网上的容已经发生了变化,这时,这部分抓取到的网页就已经过期了。

3. 待下载网页:也就是带抓取URL队列中的那些页面
4. 克制网页:还没抓取下来,也没有在待抓取URL队列中,但是可以通过
对已抓取页面或者待抓取URL对应页面进行分析获取到的URL,认为是可知网页
5. 还有一部分网页,爬虫是无法抓取下载的,称为不可知网页
三、抓取策略
在爬虫系统中,待抓取URL队列是很重要的一部分。

待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面,这也是所谓的抓取策略问题。

下面重点介绍几种常见的抓取策略
1. 深度优先遍历策略
深度优先遍历策略是指网络爬虫会从起始页开始,一个一个跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪。

遍历的路径:A-F-G E-H-I B C D
1. 宽度优先遍历策略
宽度优先遍历策略的基本思路是将新下载网页中发现的直接插入待抓取URL队列的末尾,也就是指网络爬虫会先抓取起始网页中的所有网页,然后再选择其中的一个网页,继续抓取在此网页中的所有网页,以上图为例:遍历路径为:A-B-C-D-E-F G
H I
2. 反向数策略
反向数是指一个网页被其他网页指向的数量,反向数表示的是一个网页的容受到其他人的推荐的程度。

因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。

在真实的网络环境中,由于广告、作弊的存在,反向数不能完全可靠,因此搜索引擎往往考虑一些可靠的反向数
4.Partial PageRank策略
Partial PageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待爬取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序爬取页面。

如果每次抓取一个页面,就重新计算PageRank值,一种折中方案是:没抓取K个页面后,重新计算一次PageRank值。

但是这种情况还会有一个问题:对于已经下载下来的页面中分析出的,也就是我们之前提到的未知网页那一部分,暂时是没有PageRank值的。

为了解决这个问题,会给这些页面一个临时的pageRank值:将这个网页所以入链传递进来的PageRank值进行汇总,这样就形成了该未知页面的PageRank值,从而参与排序。

下面举例说明:
5.OPIC策略
该算法实际上也是对页面进行一个重要性打分。

在算法开始前,给所以页面一个相同的初始现今,当瞎子了某个页面P之后,将P的现今分摊给所有从P中分析出的,并且将P的现金清空。

对于带抓取的URL,队列中的所有页面按照现金数进行排序。

1. 大站优先策略
对于待抓取URL队列中的所有网页,根据所属的进行分类,对于待下载页面数多的,优先下载。

这个策略也因此叫做大站优先策略。

四.更新策略
互联网是实时变化的,具有很强的动态性,网页更新写了主要决定于何时更新之前已经下载过的页面。

1. 历史参考策略
根据页面以往的历史更新数据,预测该页面未来何时会发生变化,一般是通过泊松分布进行建模预测
2. 用户体验策略
尽管搜索引擎针对于某个查询条件能够返回数量巨大的结果,但是用户往往只关注前几页的结果。

因此抓取系统可以优先更新那些现实在现实查询结果前几页中的网页,而后再更新那些后面的网页,这种更新策略也是需要历史信息的。

用户体验策略暴力网页的多个历史版本,并且根据过去每次容变化对搜索质量的影响,得出一个平均值,用这个平局值作为决定何时重新抓取的依据。

3. 聚类抽样策略
前两种方法都有一个前提:需要网页的历史信息,这样就存在两个问题,第一,系统要是为每个系统保存多个版本的历史信息,五一增加了很多的系统负担,第二,要是新的网页完全没有历史信息,就无法确定更新策略。

聚类抽样策略认为,网页具有很多属性,类似属性的网页,可以认为其更新频率也是类似的,要计算某一个类别网页的更新频率,只需要对这一类网页抽样,以他们的跟新周期作为整个类别的更新周期。

思路如下图:
五.分布式抓取系统结构
一般而言,抓取系统需要面对的是整个互联网上数以亿计的网页。

单个抓取程序不可能完成这样的任务。

往往需要多个抓取程序一起来处理。

进而出现了分布式抓取策略。

对于主从式而言,有一台专门的Master服务器来维护待抓取URL队列,它负责每次将URL分布到不同的Slave服务器,而Slave服务器则负责将实际的网页下载工作。

Master服务器处理维护待抓取URL队列以及分发URL之外,还要负责调解各个Slave服务器的负载情况,一面发生Slave服务器过劳或过剩。

1. 对等式(Peerto peer)
最下层是分布在不同地理位置的数据中心,在每个数据中心里有若干台抓取服务器,而每台抓取服务器上可能部署了若干套爬虫程序,这就构成了一个基本的分布式抓取系统。

对于数据中心的不同抓取服务器,协同工作的方式有几种
1. 主从式(Master-Slave)
此种模式下,各个服务器的分工没有不同,每台抓取服务器都可以从待抓取的URL队列中获得URL,然后对该URL的主域名的hash值H,计算Hmod m(其中m是服务器的数量),计算得到的数就是处理该URL的主机编号。

举例:假设对于URL .baidu.,计算器hash值H=8,m=3,则H mod m=2,因此由编号为2的服务器进行该的抓取。

假设这时候是0号服务器拿到这个URL,那么它将该URL转给服务器2,由服务器2进行抓取。

这种模式有一个问题,当有一台服务器死机或者添加新的服务器,那么所有URL的哈希求余的结果就都要变化。

也就是说,这种方式的扩展性不佳。

针对这种情况,又有一种改进方案被提出来。

这种改进的方案是一致性哈希法来确定服务器分工。

其基本结构如图所示:
一致性哈希将URL的主域名进行哈希运算,映射为一个围在0-232之间的某个数。

而将这个围平均的分配给m台服务器,根据URL主域名哈希运算的值所处的围判断是哪台服务器来进行抓取。

如果某一台服务器出现问题,那么本该由该服务器负责的网页则按照顺时针顺延,由下一台服务器进行抓取。

这样的话,及时某台服务器出现问题,也不会影响其他的工作。

参考书目:
1.《这就是搜索引擎-核心技术详解》俊林电子工业
2. 《搜索引擎技术基础》奕群等侵害大学
blogs./wawlian/archive/2012/06/18/2553061.html。

相关文档
最新文档