- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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,如果还是
您可能关注的文档
最近下载
- 全民所有自然资源资产清查项目预算标准.pdf VIP
- 固态电池行业深度报告:潮涌先立樯,设备启新章-250627.pdf VIP
- 2025陕西康复产业发展有限公司招聘(8人)考试备考试题及答案解析.docx VIP
- 生命科学简史2023章节测试答案_生命科学简史智慧树知到答案.pdf VIP
- 美丽的小兴安岭(公开课).ppt VIP
- 2024-2025学年初中信息技术(信息科技)七年级上册(2020)闽教版(2020)教学设计合集.docx
- (高清版)B-T 21109.1-2022 过程工业领域安全仪表系统的功能安全 第1部分:框架、定义、系统、硬件和应用编程要求.pdf VIP
- 美丽的小兴安岭(公开课).ppt VIP
- 死亡病种比例.pptx VIP
- 生命科学简史智慧树知到期末考试答案2024年.docx VIP
原创力文档


文档评论(0)