XiaoQBot网络爬虫设计和实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XiaoQBot网络爬虫设计和实现

XiaoQBot网络爬虫设计和实现   摘要: xiaoQBot是一款搜索引擎网络爬虫,提供搜索引擎网页数据支持,并设计网页数据存储模型,支持stream访问和random访问两种访问方式。详细讲解xiaoQBot搜索引擎爬虫在设计与实现过程中的一些难点和关键技术,给出一款支持百万数据集的高性能网络爬虫的设计方案。   关键词: xiaoQBot网络爬虫;设计;实现   中图分类号:TP39 文献标识码:A 文章编号:1671-7597(2011)0710063-02   1 爬取策略   xiaoQBot的爬取并非纯粹的深度或广度优先爬取算法,而是结合自身的一些功能需求做了调整。主要是考虑到内存利用率,所以将广度优先访问策略进行了一定的改造,使用两个fifo支持url的访问策略,当从其中一个fifo取出url待放入内存中时,如果内存中网页数目已经带到上限,则将其放入另一个fifo。   爬取深度控制,同一个网站一般只爬取深度在5以内的网页,深度大于5的网页不进行爬取,url在fifo中存储的格式为:深度正值url\n,例如:5:80/\n,说明5表示还可以抓取其子网页,如果深度值为1,则不能再抓取其子网页。   2 判重   判重主要包括url判重和网页内容判重两部分。在xiaoQBot中只解决了url判重,使用的是Bloom filter算法,对于从网页中解析出来的链接先判重,重了则不处理,不重,则加入url fifo中。Bloom filter是一种存在误判的hash算法,可以用于检索一个元素是否在一个集合中。其原理如下:   建立一个容量为500万的Bit Array结构(Bit Array的大小和keyword的数量决定了误判的几率),将集合中的每个keyword通过32个hash函数分别计算出32个数字,然后对这32个 数字分别用500万取模,然后将Bit Array中对应的位置为1,我们将其称为特征值。简单的说就是将每个keyword对应到Bit Array中的32个位置上,见下图:   当需要快速查找某个keyword时,只要将其通过同样的32个hash函数运算,然后映射到Bit Array中的对应位,如果Bit Array中的对应位全部是1,那么说明该keyword匹配成功。Bloom filter是一个集合的有损编码,所以它不是一种“保险”的方案,存在一定的误判率。   在我们的xiaoQBot中队bloom filter算法进行了简化,只使用一个hash函数,因为在网页抓取中,误判算不上什么大不了的事,没关系。   3 友好原则   访问友好原则主要包括:要服从网站的robots协议,对同一服务器或网站的访问频率不能过高。   robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。当xiaoQBot访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,会按照该文件中的内容来确定访问的范围;如果该文件不存在,则随便访问。   robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。   语法:最简单的robots.txt文件使用两条规则:   User-Agent:适用下列规则的抓取器;   Disallow:要拦截的网页;   对同一网站的访问不能过于频繁,否则会被网站禁ip。所以xiaoQBot在访问时,对同一网站每隔60s或30s访问一次。   4 爬取控制   爬取控制主要包括爬取网页类型的控制和爬取范围的控制。   对于后缀式下列的,都不抓取:   同时检验http返回消息头信息content-type,如果是text/html,则抓取,否则不抓取。   5 超时控制   超时主要包括连接超时,写超时,读超时。在xiaoQBot的实现当中,超时时间设置为30,对于连接和写超时足够了,但读超时设置成30存在问题,那就是当网页很大时,下载时间可能会比较长,所以针对这种情况,相应的对策是每下载2k的数据,则允许的超时时间延长1s。   6 存储模型   对于已经下载到内存中的网页,我们还要将其存储到硬盘上,期间需要对网页做一些处理,并存储一些相关信息。具体有:网页编码检测,网页编码转化,压缩存储,文档编号,PageRank链接关系存储等。   1)网页编码检测   首先检测http返回消息头中的content-type中的charset域,例如:   如果有charset字段,则取编码;   如果没有charset字段,这种情况很多,则还需要进一步处理,在网页中检测中的charset字段,如果找到,则ok,如果还是

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档