Google工程师在2008年VLDB大会上关于Deep Web的演讲稿(续)
网页的提交一般都是采用表单的方式,通过各种各样的表单项和组合可以形成各种各样的查询。表单的提交方式有两种,POST方式和GET方式,POST方式所有的提交网址都是同一种形式,表单内容都隐藏在HTTP的请求中一起提交的,而GET方式则每次都是不一样的。
我们可以想象每一个Form后面都有一个数据库,每一次Form的提交就类似于查询SQL语句一样:select * from DB where I1=V1 and … and IN=VN 。但是也不是所有Form中的每一个表单都是对于这个数据库是有意义的。比如:排序,分页大小的选择等等。如何得到一个非常适合的Query集合是非常关键的。
为了得到更合适的Query集合,我们想到了采用Query模版,也就是一个Query的表单集,能够迭代得到最多可能的所有的Query。对于一个卖书的商店,对应的Query集合可能如下:
<Z> {select * from DB where zip = z | z are valid zip codes }
<T> {select * from DB where type = t | t are valid store types }<T, Z> {select * from DB where zip = z and type = t | … }
对于一个HTMl表单来说,经常会存在同时存在多个输入域,假如我们需要穷举得到所有可能的Query集合,这个是非常复杂的事情,而且会非常浪费。产生太多的Query会导致爬虫在抓取的过程中抓取太多无用的信息,其实我们更需要得到所有可能的表单组合,并不一定是采用穷举的方式来实现,我们的目标是采用最小的集合得到最大的产出,物超所值!
但是我们也需要考虑其他的问题:比如每一条产生的URL都会被建立到索引文件里去,我们必须得到尽可能好的URL地址,我们也不需要穷尽后台数据库对应的每条记录,我们产生的所有的Query只要能够代表整个Deep Web站点就可以了。
假如我们绑定的参数尽可能的多,那么会产生足够多的Query,这样会得到很多的空结果页面,整个站点的覆盖度会非常高。相反,假如我们绑定的参数比较少,相应产生的Query集合比较小,这样会导致Query太单一,结果和Query 不一定相关,整个网站覆盖率太低的问题。
如何才是一个真正好的Query模版呢?依赖网站后台数据库大小?依赖Query得到结果量的趋势?
如图所示:对于两种不同的Query集合,有些能产生信息,而有些并不能带来更多的信息,对于“state”这个参数来说,是有价值的,但是对于“type”这个参数来说,并不能带来更多的有价值的信息。
为了识别有效地信息模版,得到有效地form表单。我们必须能够做到如下几点:
1、 能够随即抽样一些Form表单;
2、 分析和比较通过From表单得到的结果页面;
3、 对结果页面进行信息的签名,能够唯一标识页面;
4、 页面信息签名必须能够应对布局经常改动的页面,某些具有动态广告的页面等。
如下图所示:采用穷举所有的Query集合和绑定三个输入源产生的Query集合与得到的信息量曲线:

通过测试我们得到两个结论:
大模版是非常有用的。采用简单的策略进行比较,我们仅仅考虑绑定输入域多少的模版,如下所示:
a) 模版大小为1的时候为谷歌贡献了 6% 的搜索结果
b) 模版大小为2的时候为谷歌贡献了37% 的搜索结果
c) 模版大小为3的时候为谷歌贡献了57% 的搜索结果
Google的Deep Web爬虫具有如下特征:
a) 采用信息模版的解决方案来实现爬虫
b) 通过上百万的Form来实现自动描述
c) 跨越多个站点和50多种语言
d) 每秒能够产生100多个Query
e) 每天能够产生40万以上的结果页面
f) 每周能够产生80万以上的结果页面
Google未来的工作,能够完成更多的Form,比如实现Post方式提交的From,当前某些站点采用JS提交的Form等。
译者注:Deep?Web指那些存储在网络数据库里、不能通过超链接访问而需要通过动态网页技术访问的资源集合。网络数据库包括搜索引擎数据库、在线专业数据库及站内搜索数据库,当前的搜索引擎仅仅包含了很少的部分内容,据BrightPlanet公司技术白皮书(The?Deep?Web-Surfacing?the?Hidden?Value),Deep?Web资源容量约为Surface?Web的500倍,而且包含着更多有价值的资源。当时最大的搜索引擎只索引了Surface?Web中的16%信息量,而如果算上那些无法被传统搜索引擎索引的Deep?Web中的信息,那么一般搜索引擎只能搜索0.03%的Web信息。但是要实现能够抓取这部分的信息,对于爬虫来说具有很大的挑战,不仅仅需要爬虫能够自动识别Form,对网站进行分类,自动识别表单类型和需要填写的表单值,而且需要根据提交的Query去噪,识别和抽取得到的信息,这些算法的实现过程都是非常困难的,有兴趣的同学可以大家一起来讨论讨论。

最新评论