XML地图 深圳SEO培训为广大SEO爱好者提供免费SEO教程,致力于SEO优化、SEO服务
首页 > SEO资讯 » 网络爬虫暗网抓取(Deep Web Crawling)

网络爬虫暗网抓取(Deep Web Crawling)

2018-10-10 | 人围观 | 关键词:


  暗网抓取(Deep Web Crawling)
 

  物理学研究表明,在目前宇宙所有物质的总体质量中,星系等可见物质只占其中的20%,不可探测的暗物质则占据了总质量的大约80%。互联网中的暗网可与宇宙中的暗物质相类比,而其所占网页的比例,更是远大于暗物质占宇宙质量的比例,大约百倍于目前的明网(Surfacing Web)网页。
 

  所谓暗网,是指目前搜索引擎爬虫按照常规方式很难抓取到的互联网页面。如前所述,搜索引擎爬虫依赖页面中的链接关系发现新的页面,但是很多网站的内容是以数据库方式存储的,典型的例子是一些垂直领域网站,比如携程旅行网的机票数据,很难有显式链接指向数据库内的记录,往往是服务网站提供组合查询界面,只有用户按照需求输入查询之后,才可能获得相关数据。所以,常规的爬虫无法索引这些数据内容,这是暗网的命名由来。图2-10是携程旅行网的机票搜索界面和引这些数据内容,这是暗网的命名由来。图2-10是携程旅行网的机票搜索界面和当当网的图书搜索界面。

 

  

 

  为了能够对暗网数据进行索引,需要研发与常规爬虫机制不同的系统,这类爬虫被称做暗网爬虫。暗网爬虫的目的是将暗网数据从数据库中挖掘出来,并将其加入搜索引擎的索引,这样用户在搜索时便可利用这些数据,增加信息覆盖程度。
 

  目前大型搜索引擎服务提供商都将暗网挖掘作为重要研究方向,因为这直接关系到索引量的大小。在此领域的技术差异,将直接体现在搜索结果的全面性上,自然是竞争对手之间的必争之地。Google目前将其作为重点研发方向,而百度的“阿拉丁计划”目的也在于此。
 

  垂直网站提供的搜索界面,往往需要人工选择或者填写内容,比如机票搜索需要选择出发地、到达地和日期,图书搜索需要指出书名或者作者。而暗网爬虫为了能够挖掘数据库的记录,必须模拟人的行为,填写内容并提交表单。对于暗网爬虫来说,其技术挑战有两点:一是查询组合太多,如果一一组合遍历,那么会给被访问网站造成太大压力,所以如何精心组合查询选项是个难点;第二点在于:有的查询是文本框,比如图书搜索中需要输入书名,爬虫怎样才能够填入合适的内容?这个也颇具挑战性。
 

  2.6.1 查询组合问题
 

  暗网爬虫希望能够将某个垂直网站数据库的记录尽可能多地下载到索引库中,但这是有约束和前提条件的,即不能给被访问网站造成过大的访问压力,同时尽可能节省爬虫本身的资源。
 

  垂直搜索网站往往会给用户提供多个查询输入框,不同输入框代表了搜索对象某方面的属性,通过组合这些属性来将搜索范围缩小。对于暗网爬虫来说,一个简单粗暴的方式就是:将各个输入框可能的输入值组合起来形成查询,比如对于机票查询来说,将所有出发城市、所有目的城市和时间范围的选项一一组合,形成大量的查询,提交给垂直搜索引擎,从其搜索结果里提炼数据库记录。这么做比较野蛮,而且也不是很必要,因为很多组合是无效的,大量的返回结果为空,同时对被访问网站造成了巨大的流量压力。
 

  Google对此提出了解决方案,称之为富含信息查询模板(Informative QueryTemplates)技术,为了了解其技术原理,首先需要明白什么是查询模板。我们以图2-11所示的“职位搜索”垂直网站来说明。

 

  

 

  在图2-11的示例中,为了描述一个职位,完整的查询由3个不同的属性构成:职位类别、行业类别和工作地点。如果在向搜索引擎提交查询的时候,部分属性被赋予了值,而其他属性不赋值,则这几个赋值的属性一起构成了一个查询模板。
 

  图2-12是若干个“查询模板”的示例,如果模板包含一个属性,则称之为一维模板,图中模板1是一维模板,模板2和模板3是两个二维模板,模板4是三维模板。

 

  
 

  对于一个固定的垂直搜索来说,其查询模板组合起来有很多,我们的任务是找到富含信息的查询模板,那么什么又是富含信息查询模板呢?Google的技术方案是如此定义的:对于某个固定的查询模板来说,如果给模板内每个属性都赋值,形成不同的查询组合,提交给垂直搜索引擎,观察所有返回页面的内容,如果相互之间内容差异较大,则这个查询模板就是富含信息查询模板。
 

  以图2-12中的模板2为例说明,其包含了两个属性:职位类别和行业类别。职位类别有3种不同赋值,行业类别有2种不同赋值,两者组合有6种不同的组合方式,形成这个模板的6个查询。将这6个查询分别提交给职位搜索引擎,观察返回页面内容变化情况,如果大部分返回内容都相同或相似,则说明这个查询模板不是富含信息查询模板,否则可被认为是富含信息查询模板。
 

  之所以做如此规定,是基于如下考虑:如果返回结果页面内容重复太多,很可能这个查询模板的维度太高,导致很多种组合无搜索结果,抑或构造的查询本身就是错误的,搜索系统返回了错误页面。
 

  假设按照上面方式对所有查询模板一一试探,判断其是否富含信息查询模板,则因为查询模板数量太多,系统效率还是会很低。为了进一步减少提交的查询数目,Google的技术方案使用了ISIT算法。
 

  ISIT算法的基本思路是:首先从一维模板开始,对一维查询模板逐个考察,看其是否富含信息查询模板,如果是的话,则将这个一维模板扩展到二维,再次依次考察对应的二维模板,如此类推,逐步增加维数,直到再也无法找到富含信息查询模板为止。通过这种方式,就可以找到绝大多数富含信息查询模板,同时也尽可能减少了提交的查询总数,有效达到了目的。Google的评测结果证明,这种方法和减少了提交的查询总数,有效达到了目的。Google的评测结果证明,这种方法和完全组合方式比,能够大幅度提升系统效率。
 

  如果读者对于数据挖掘有所了解,可以看出,Google提出的算法和数据挖掘里经典的Apriori规则挖掘算法有异曲同工之处。
 

  2.6.2 文本框填写问题
 

  对于输入中的文本框,需要爬虫自动生成查询,图2-13给了一个常用做法的流程图。
 

  
 

  在爬虫运转起来之前,因为对目标网站一无所知,所以必须人工提供一些提示。在此例中,通过人工观察网站进行定位,提供一个与网站内容相关的初始种子查询关键词表,对于不同的网站,需要人工提供不同的词表,以此作为爬虫能够继续工作的基础条件。爬虫根据初始种子词表,向垂直搜索引擎提交查询,并下载返回的结果页面。之后从返回结果页面里自动挖掘出相关的关键词,并形成一个新的查询列表,依次将新挖掘出的查询提交给搜索引擎。如此往复,直到无法下载到新的内容为止。通过这种人工启发结合递归迭代的方式,尽可能覆盖数据库里的记录。
 

相关内容推荐:

Top