《信息检索导论》第二十章总结

  • Post author:
  • Post category:其他

一、Web采集介绍

Web采集是从Web中采集大量网页的过程,并且要避免采集重复或无用的页面,采集完的网页需要构建索引,以扩大搜索引擎的索引规模;

web采集通常是由多台机器并行采集;

web采集的必须功能

(1)Web采集器需要识别采集器陷阱(spider traps),比如当采集器访问到某个web服务器的网页时,此网页会生成无限多个网页被采集器采集,从而使得采集器不能跳出;

(2)web服务器都有一个政策,比如服务器每5秒只能访问一次,因此采集器必须遵循这些规则;

web采集的可选功能

1.分布式:采集器有多个节点;

2.即时更新:将原始抓取的网页进行更新;

3.功能可扩展性:可以增加协议;

二、Web采集流程

web采集过程类似于遍历web图的过程;

1.设定一个或多个URL作为种子集合,并放入URL等待池;

2.抽取URL:在URL池中取出一个URL,并在URL池中删除这个URL(如果是连续式采集,则可以不用删,因为以后还会采集此URL进行页面更新);

3.采集网页;

4.分析网页,并抽取出文本和链接,文本放入索引器,链接首先检查是否已被采集、是否内容相同、是否满足robots.txt文件,如果未被采集、内容不同、满足robot,则放入URL等待池(URL Frontier)(通过shingle方法判断内容重复),等待被采集;

对于连续式采集,抽取URL后不一定要删除URL池中的,因为以后还会被采集;

Content Seen处理内容重复;

URL Filter处理robots文件的问题;

URL duplication处理URL已采集问题;

web采集器的模块

(1)URL池;

(2)DNS解析器;

(3)抓取模块;

(4)分析模块;

(5)URL去重模块;

web服务器通过拒绝蜘蛛协议(robot exclusion protocol)对采集器进行限制,通过在web目录下放置robots.txt;

在访问web服务器的页面之前,必须先抓取robots.txt文件,放入缓存(加快速度);

注意:在判定URL是否放入URL池的时候就需要去抓取robots.txt判定,在真正抓取页面之前必须访问robots.txt文件进行判定,因为放入URL池后,robots文件可能会改变;

在URL池取出URL的时候需要考虑不能一直返回相同Web服务器的URL,礼貌问题;

以上是前端队列,当URL放入URL池时,会分配一个优先级,并放入特定的队列;

上图是后端队列,每个队列对应一个主机;

需要保证在采集时后端队列的每个队列不能为空;

Heap的每个元素对应一个后端队列,表示一个web服务器所能再次被访问的最早时间;

分布式web采集

有多个采集器,分布在世界各地;每个采集器

采集器和原来差不多,只是多了主机划分器,并且URL查重模块需要接收其他机器发来的URL;

Host Splitter是主机划分器,宗旨是采集器需要采集的网页是地理位置相邻的web服务器的网页,因此需要有这个主机划分器进行分配URL;

DNS(Domain Name Service)服务器:用来将URL解析成IP的机器;

DNS解析:将URL解析成IP地址;

DNS服务器通常会有多个,因此是分布式的;

DNS解析的时间很长,所以可以通过DNS缓存加快速度;