【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

详细可参考

(1)书箱:《这就是搜索引擎》《自己动手写网络爬虫》《解密搜索引擎打桩实践》

(2)【搜索引擎基础知识1】搜索引擎的技术架构

(3)【搜索引擎基础知识2】网络爬虫的介绍

(一)搜索引擎的开发一般可分为以下三大部分

1、数据采集层:一般使用爬虫获取互联网的数据,重要的开源项目有Heritrxi

2、数据分析处理层:将从互联网上获取到的数据进行提取归类、分词、语义分析得出索引得内容,等待用户查询使用,重要的开源项目有Lucene

3、视图层:也用户的交互界面,如一个网站的首页

其基本架构可参考下图:

(二)网络爬虫的简介

详细请参见  【搜索引擎基础知识2】网络爬虫

下面例子将简单实现宽度优先搜索策略。

广度优先搜索策略

宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页, 一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。

还是以上面的图为例,抓取过程如下:

广度搜索过程:

首先访问页面v1 和v1 的邻接点v2 和v3,然后依次访问v2 的邻接点v4 和v5 及v3 的邻接点v6 和v7,最后访问v4 的邻接点v8。由于这些顶点的邻接点均已被访问,并且图中所有顶点都被访问,由些完成了图的遍历。得到的顶点访问序列为:

v1→v2 →v3 →v4→ v5→ v6→ v7 →v8

和深度优先搜索类似,在遍历的过程中也需要一个访问标志数组。并且,为了顺次访问路径长度为2、3、…的顶点,需附设队列以存储已被访问的路径长度为1、2、… 的顶点。

(1)采用广度优先的原因:

重要的网页往往离种子站点距离较近;万维网的深度没有我们想象的那么深,但却出乎意料地宽(中文万维网直径长度只有17,即任意两个网页之间点击17次后便可以访问到);

宽度优先有利于多爬虫合作抓取;

(2)广度优先的存在不利结果:

容易导致爬虫陷入死循环,不该抓取的反复抓取;

应该抓取的没有机会抓取;

(3) 解决以上两个缺点的方法是深度抓取策略(Depth-First Trsversal)和不重复抓取策略

(4)为了防止爬虫无限制地宽度优先抓取,必须在某个深度上进行限制,达到这个深度后停止抓取,这个深度就是万维网的直径长度。当最大深度上停止抓取时,那些深度过大的未抓取网页,总是期望可以从其他种子站点更加经济地到达。限制抓取深度会破坏死循环的条件,即使出现循环也会在有限次后停止。

(5)评价:   宽度(广度)优先,兼顾深度的遍历策略,可以有效保证抓取过程中的封闭性,即在抓取过程(遍历路径)中总是抓取相同域名下的网页,而很少出现其他域名下的网页。

【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

时间: 2024-10-04 03:49:23

【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫的相关文章

【搜索引擎Jediael开发4】V0.01完整代码

截止目前,已完成如下功能: 1.指定某个地址,下载其页面中包含的所有链接指向的网页 主要有以下类: 1.主类MyCrawler 2.网页下载类PageDownloader 3.网页内容分类类HtmlParserTool 4.接口Filter 完整代码可见归档代码 Jediael_v0.01 或者 https://code.csdn.net/jediael_lu/daopattern/tree/d196da609baa59ef08176322ca61928fbfbdf813 或者 http://d

iOS陆哥开发笔记(七) (AVFoundation简单介绍)

在AVFoundation框架中AVAudioRecorder类专门处理录音操作,支持多种音频格式. 以下是经常使用的属性和方法: 属性 说明 @property(readonly, getter=isPlaying) BOOL playing 是否正在播放,仅仅读 @property(readonly) NSUInteger numberOfChannels 音频声道数,仅仅读 @property(readonly) NSTimeInterval duration 音频时长 @property

iOS开发笔记4:HTTP网络通信及网络编程

这一篇主要总结iOS开发中进行HTTP通信及数据上传下载用到的方法.网络编程中常用的有第三方类库AFNetworking或者iOS7开始新推出的NSURLSession,还有NSURLSession的前任NSURLConnection.一般情况下,使用AFNetworking即可满足绝大多数要求,并且更简洁高效. 1.HTTP协议之POST与GET 访问网络数据大部分都要用到HTTP协议,通过HTTP协议向服务器请求数据,再通过HTTP协议获得服务器的响应数据,常见的操作主要是POST与GET,

【课程分享】基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎

对这个课程有兴趣的朋友,能够加我的QQ2059055336和我联系,能够和您分享. 课程介绍:最有前途的软件开发技术--搜索引擎技术 搜索引擎作为互联网发展中至关重要的一种应用,已经成为互联网各个领域的制高点,其重要性不言而喻.搜索引擎领域也是互联网应用中不多见的以核心技术作为其命脉的领域,搜索引擎各个子系统是怎样设计的?这成为广大技术人员和搜索引擎优化人员密切关注的内容. 随着互联网行业兴起,大数据时代的到来,搜索引擎开发成为一项极富含金量的工作,市场对搜索软件开发project师的需求极其旺

Tomcat和搜索引擎网络爬虫的攻防

不知道广大程序员朋友们注意到一个现象么?使用百度是无法搜索到淘宝网的网页.为什么会造成这种现象?这就要从网络爬虫说起了. 咱们程序员假如自己搭设个人网站,在上面分享少量自己的技术文章,面临的一个重要问题就是让搜索引擎能够搜索到自己的个人网站,这样才能让更多的读者访问到. 而搜索引擎如百度和微软Bing搜索,Google搜索等通过什么方式才能收录我们的个人网站呢? 答案是搜索引擎的网络爬虫. 网络爬虫是一个很形象的名词,是属于搜索引擎的工具,只有被这些网络爬虫"爬过"的内容才有机会出现在

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

【Query处理学习笔记】搜索引擎查询推荐技术综述_中文信息学报2010_王斌

主要内容:对通用搜索引擎的查询推荐技术的方法.评价进行了总结 具体内容: "查询推荐"的不同英文叫法:Query Suggestion.Term Suggestion.Query Recommendation.Query Substitution.Query Rewriting 查询推荐的任务:找出和用户查询相似的query,以便更好地表达用户查询意图,供用户便捷输入 三种技术方法: 1. 基于文档的方法:通过处理query搜索出来的文档,以此作为反馈,进一步理解用户意图,扩充quer

DLNA&UPnP开发笔记(4)— PlatinumKit库介绍

前面几篇文章主要从理论上介绍了DLNA和UPnP协议的相关概念和知识点,本文主要介绍一下PlatinumKit库,该库实现了UPnP协议栈,代码写得非常漂亮,但文档不多,所以希望我的介绍和引导能够帮助初学者更快速地掌握该库的应用. 1. PlatinumKit库的官方网站 http://www.plutinosoft.com/platinum/ 2. PlatinumKit库的特点 (1)由C++编写 (2)支持Windows, Mac OSX, Linux, iPhone, Android (

前端开发笔记(1)html基础

HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,notepad++ 比较有名的专门制作网页工具有:DreamWeaver (Adobe公司的产品,过时了,不是一个好的代码编辑器) Sublime (高效率的程序书写工具) WebStorm (更高级的项目级别编程工具) 文档头声明 任何一个标准的HTML页面,第一行一定是一个以 我们现在学习的是HTML4