IT技术博客大学习 共学习 共进步

视频站收录浅析

搜索研发部官方博客 2011-06-21 13:35:48 浏览 2,724 次

    随着网速的不断提高,人们通过互联网观看视频的需求正越来越大。互联网上的视频站和视频资源也在不断增加,人们经常需要借助搜索引擎来查找自己需要的视频。对视频资源的索引也相应地成为了搜索引擎的一个基本功能。而要提供对视频资源的良好索引需要首先做到对视频站点的足够好的收录。本文将对视频站的收录进行简单探讨。

一、 简述

    视频检索系统一种数据流图如下图所示。主要包括网页的抓取、网页上信息的抽取以及建立起索引提供外部可以访问的检索服务几个主要步骤。视频收录指的就是网页的抓取这一步。视频检索实际上也是文本检索,其核心数据只有两种:一种是用于定位视频资源的url,通过该url可以观看视频,通常是视频播放页面的url;另一种是对视频资源的内容进行说明的各种各样的描述信息,通过这些描述信息在用户的检索请求和视频资源之间架起了一座桥梁。因此,对于视频站的收录,核心就是获取视频播放页url及视频的文本描述信息。

二、 视频站的哪些网页需要收录?

    视频检索所需数据只有两类:资源页面URL和描述信息。我们的最终目标就是得到这两类信息,因此可以从一些具体的视频站入手,看看这两类资源在何种页面上出现。

    各个视频站各有特色,包含的内容也是五花八门,但视频资源都是核心内容,每个站都包含了两类最基础的页面:视频播放页和视频索引页。

    所有的播放页里面都会包含很多与视频相关的描述信息,比如:播放时长、名称、简介、用户评论等等。而播放页本身的url实际上就是资源url。因此,对播放页的抓取可以得到足够的信息供检索使用,而且得到的是最为详细的描述信息。

    有很多网页上会提供视频列表,这一种页面可以称之为视频索引页。这类网页上至少包含了如下信息:资源url、视频的名称、视频的缩量图。另外,很多网站还会提供播放时长、发布时间等简单的描述信息。因此,对索引页进行抓取也可以得到检索所必须的信息。其特点是:一方面,单次抓取就可以得到多条数据,从抓取角度来看相当经济;另一方面,得到描述信息相对匮乏,对资源的评价等会相对困难。另外,一个站点会提供各种各样的索引页,类似优酷、土豆这类用户产生内容的站点,其各类索引页的量甚至大于播放页。因此,一个站点的初期收录阶段,索引抓取会很经济,但足够长时间之后,如果不加筛选就会走向反面。

三、 如何评价收录效果?

    可以从用户的角度思考,用户希望看到尽量多的视频,也会希望新出来的视频马上就能搜到,另外,还会希望可以找到自己不是很熟悉但是了解一些相关信息的视频。

    推演开来,可以归纳为如下几个指标:

    时效性,也就是收录延迟,视频发布之后经过了多长时间才被收录的;

    覆盖率,也就是全部视频中有多少被收录了,还有多少没有被收录;

    信息丰富度,描述信息的详细程度,借助这个数据既可以对视频的质量进行预先评估也可以让用户从多个角度检索视频。

四、 如何收录?

    了解清楚我们的收录目标之后,就可以考虑如何收录了。

    先考虑一种最原始的方案,从一个种子页面出发,将所有从这个页面中解析出来的url全部加到抓取队列里面。这样整个站点从逻辑上来看就是一个大的url队列了。

    这种方案存在这样的问题,比如在开始阶段,我们可能希望尽快收录一些资源,希望多抓一些包含视频比较多的索引页,但是因为播放页等其他页面的数量非常庞大,要很久才能碰到一条索引页。有的页面比如用户论坛,可能不是我们需要的,有的页面可能是我们当前不希望抓的,但因为他们是一个大的队列没有区分,所以也无法进行个性化的控制。概括一下就是:类型区分度不足,无法精细化的分类抓取。

    此外,这种方案中队列中的每个页面都是平等的,这意味着每个页面都会大体按照相同的间隔进行检查。但实际上各类页面的变动规律差别非常大,首页可能几分钟就会产生新的内容,部分索引页也会有非常短的变动间隔,如果不及时抓取,其内容就会被错过。而另一方面播放页等内容稳定的页面,其核心内容可能永远都不会发生变化,虽然抓取了几十次可只有第一次抓取是有效的。

    综合起来说,一个站点的资源总量往往非常庞大,而受限于抓取系统的资源以及视频站点的承受能力和抓取容忍情况,对视频站点的抓取量是有限的,因此需要精细的控制。视频的收录需要做到两点:一个站点的页面需要细分为多个分组从而可以控制分组是否需要抓以及抓多少、分组内部抓取的周期需要个性化的调整。

五、 站内页面分组简介

    站点页面的分组可以有多种方式多种维度。我们可以利用的维度主要有如下几种:页面url、页面内容、页面的历史抓取收益等。

    最简单的是根据url的长相进行分类,这也是一种最为简单可控的方式。这种方法的基本依据是:站点的内容通常是一系列程序维护的,url的长相一般而言会跟所涉及到的程序有一定关联,另外,站长对内容的组织也往往会在url中有所体现。根据url长相分类,还可以细分为多种:采用自动聚类的方式,也可以采用人工配置正则的方式。

    根据页面的内容也可以实现分类。人进行分类的时候,实际上往往是根据内容进行分类的。但这种分类往往是语义上的分类,要做到非常完善难度还是很大的。具体比如包含了一个视频播放器的页面,我们会把它归到播放页中;用户自己组织构建的一个视频专辑,会被归为用户专辑页;网站自动生成的一些大的列表页比如最新播放等,则会被归为索引页。另外,一条url从一个页面中什么地方得到的也可以作为一个分类依据,比如从相关视频中得到的url可以预先归为视频播放页,相关专辑中得到的可以归为专辑页等等。

    一个页面被抓取了多次之后,还可以得到一个页面的累积总收益和最近一段时间的收益。据此,可以将页面内容细分为:活跃页面、非活跃页面、综合高收益页面等。

    上述几个因素可以组合使用,从而达到对站点的精细划分,进而就可以实现精细控制了。站点页面分为多组之后,还需要考虑分组之间的关系,一般通过分组之间的产出关系确定或者更细化为根据从一类页面的哪个位置产出的确定。有了关系之后,就可以对一个分组进行整体评价从而控制如何抓取各个分组了。如果能够得到一个站点的资源组织结构,就可以知道要抓取一类页面,需要抓取什么类型的分组、按照什么顺序最为快速等等。

六、 链接变动预测

    分组是一个比较宏观的单位,链接才是一个站点的最基本单元。一个站点链接往往还是个性化的。能够根据各个链接的本身特性确定抓取间隔等基本参数才是比较理想的。具体到一条链接之后,其量化特征较少,主要就是历史抓取收益,受限于资源一般只能记录少量几次。进行链接级的抓取控制可以很好的节省抓取流量。

    链接的变动是因为内容发生变化,内容变化也有一些模式。最简单的方式可能是根据最近一次是否有收益进行间隔的拉长或者压缩,也可以考虑根据变动模式进行更为细致的控制。更为细致的控制一般需要两步:确定模式和根据模式进行抓取控制。下面介绍几种常见的模式:

    内容的变化可能是程序周期性的修改,比如网站将审核通过的视频每隔几分钟发布一次,这种页面理想的方式就是采用与网站相同的周期进行抓取,具体实现可以采用不断重试逐步逼近的方式。

    有的变动是受事件触发的,这类资源的变动会比较随机。比如用户上传了一个新视频或者NBA进行了一场比赛等都会触发一些视频资源的产生,要达到100%的覆盖,只能采用暴力检查的方式使用最小变动间隔疯狂检查。另外,变动往往会持续一段时间,所以发现变动之后,一般需要采用较短周期进行多次检查。

    有的内容变动是由网站编辑触发的,编辑上班期间会频繁变动,编辑下班之后会沉寂几个小时,对于这类页面则需要检测出大体变动点,下班之后停止检查,一旦检查变动了需要立即缩小抓取间隔。

七、小结

    视频站的收录要获取的信息主要包括:视频资源url和描述信息。这些信息从播放页和索引页都可以拿到,但所得到的信息各有优缺点。理想的收录方式是,根据不同的抓取目标以及所处的抓取阶段进行精细的控制。要进行精细的控制就需要对站点的页面进行分类或者聚类,也就是区分开,从而可以从集合的角度实现对收录的控制。此外,只是进行集合级的控制往往还是会有很大流量浪费,也有必要进行链接级的收录方式控制。

建议继续学习

  1. HTTP Live Streaming (HLS) 不错的视频直播技术 (阅读 6,845)
  2. 如何提升视频服务质量 (阅读 6,202)
  3. HTML5视频的那些事儿 (阅读 3,604)
  4. 姐要的视频广告 (阅读 3,564)
  5. 浅析视频搜索中的清晰度识别过程 (阅读 3,424)
  6. 说起版权保护 (阅读 3,322)
  7. 视频的容器与格式 (阅读 2,204)
  8. 百度site指令查收录的问题汇总 (阅读 2,061)