搜索引擎学习笔记——第三章 Web 信息的搜集

三段式流程:网页搜集,预处理和查询服务。从这章开始讲解一个完整的搜索引擎TSE(tiny Search Engine)的实现,编程语言采用C++,代码可在【TSE,2004】下载。TSE包括三段式工作流程,分别对应本章的Web信息的搜集,第四章搜集信息的预处理和第五章的信息查询服务。


第一节 引言
一、超文本传输协议
超文本传输协议(Hypertext Transfer Protocol,HTTP)是Web的基础协议。这是一个简单协议。客户进程建立一条同服务器进程的TCP连接,然后发出请求病毒区服务器进程的应答。服务器进程关闭连接表示本次响应结束。服务器进程返回的内容包含两个部分,一个”应答头“(response header)”,一个“应答体”(response body),后者通常是一个HTML文件,我们称之为“网页”。
在Linux(或 Windows)环境下,有一个简单的方法可以让我们来感受一下HTTP协议的工作情况,即运行一个Telnet的客户程序与一个HTTP服务器程序通信。
下面是获取北京大学主页的例子(注意,下面显示的从服务器得到的内容并不包括上述“应答头”)。

[web@BigPc ]$ telnet www.pku.cn 80           //连接到服务器的80号端口        
Trying 162.105129.12...                      //由Telnet客户输出
Connected to rock.pku.cn(162.105.129.12)..   //由Telnet客户输出
Escape character is '^]'.                    //由Telnet客户输出
GET/    //我们只输入了这一行
<html>   //Web服务器输出地第一行
<head>
<title>北京大学</title>
……       //这里省略了很多行输出
</body>
</html>
Connection closed by foreign host.       //由Telnet输出

我只输入了GET/,服务器却返回了很多字节。这样,从该Web服务器的根目录下取得了它的主页。Telnet的客户进程输出地最后一行信息表示服务器进程进程在输出最后一行后关闭了TCP连接。
在接下来的几节中,将通过一个小的搜索引擎系统TSE(运行在Red Hat Linux 8.0以上的系统中)【TSE,2004】,一边讲原理技术,一边讲代码,描述Web信息搜集的过程,本处的Web信息搜集主要指网页信息。
网页搜集子系统,指的是spider,可以用C/C++,Perl,Java,Python等语言来编写,可以运行在Intel,Sparc,Mac等平台上的Unix或Windows系统下。网页“爬取器”(gatherer),指网页搜集子系统中根据URL完成一篇网页抓取的进程或者线程,通常一个spider会同时启动多个gatherer并行工作。Spider设计是否合理将直接影响它访问Web的效率,影响搜集数据的质量,另外,在设计spider时还必须考虑它对网络和被访问站点的影响,因为spider一般都运行在速度快、带宽高的主机上,如果它快速访问一个速度比较慢的目标站点,就会有可能导致该站点出现拥塞甚至宕机。Spider还应该遵守一些协议(例如:robot限制协议),尊重被访问站点管理员确定的内容保护策略。


二、一个小型搜索引擎系统
TSE,麻雀虽小五脏俱全,适合教学、学习。

我们用A,B,C标识TSE其中的几个部分。
1)“A”表示统计栏,包括用户输入的查询词,有关查询结果和搜索时间(一般搜索响应时间不超过1秒钟)的统计数字;
2)“B”表示一条查询结果,包括该网页地址、网页摘要(在摘要信息中,您的原始查询字词,都用红色字体表示,以便阅读)。
3)”C“表示网页快照。通过链接访问网页失效时,可以访问TSE的缓存网页;或者网络拥塞的时候,可以通过访问缓存网页避免直接访问该网页。
为了能够查询网页,并含有网页快照功能,需要添加网页搜集和预处理功能。

搜索引擎学习笔记——第三章 Web 信息的搜集 - 贝壳 - 大浪淘贝

 
图3-4所示为TSE系统结构,对应于搜索引擎的三段式工作流程,是图中左侧A表示搜集部分,中间的B表示整理(即预处理)部分和右侧的C表示服务部分。黄色圆柱形图形表示数据产品,按照统一并且简单易懂的格式存储,除本系统使用外,可以提供给其他科研机构使用;椭圆形绿色图表示系统流程中的内部数据,由于与系统中使用的数据结构结合紧密,不适合作为数据产品提供给其他科研机构;矩形蓝色表示系统流程的程序部分(过程),是数据产品与内部数据之间的桥梁。系统起始于A搜集,结束于C服务,整个流程可以重复进行,从而达到系统的更新。图3-4中的各个数据产品,内部数据和过程在后续章节相应部分细致讲解。在TSE中,不包括PageRank的计算和日志挖掘,这两个过程主要对查询结果的排序产生作用,在实际应用中的搜索引擎是必不可少的。


第二节 网页搜集

3-5是3-4左侧部分的细化。网页搜集的过程是从URL库(初始时包含用户指定的起始种子URL集合,可以是1个或多个)获得输入,解析URL中标明的Web服务器地址、建立连接、发送请求和接受数据,将获得的网页数据存储在原始网页库,并从其中提取的链接信息放入网页结构库,同时将待抓取的URL放入URL库,保证整个过程的递归进行,直到URL库为空。

搜索引擎学习笔记——第三章 Web 信息的搜集 - 贝壳 - 大浪淘贝

 

搜索引擎为了提高检索服务,需要保存网页原文。网页搜集子系统不但要能够获取.html,.htm,.txt结尾的URL对应的网页,还应该获取比如.pdf,.doc,因为.pdf,.doc等文件可以通过转换程序生成.html或.txt文件,同样为搜索引擎提供检索服务。作为搜索引擎的起始流程,搜集的网页要按照一定的格式存储。
传统应用的实现在系统结构定下来后,重点是确定其中的数据结构。而面向对象方法具有更好的特性,例如C++。针对系统实现的描述,依据重要名称定义为类的原则,重点讲解URL类和Page类。后面把TSE中的搜集部分分解开来讲解,包括:定义URL类,定义Page类,与服务器建立连接,构造请求消息体并发送给服务器,获取服务器返回的网页元信息(或者称为网页头信息)和获取网页信息(或者称为网页体信息)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值