基于深网络的垂直搜索引擎蜘蛛的基本解决方案_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于深网络的垂直搜索引擎蜘蛛的基本解决方案从直观上面看,检索器普通在form标签里面,有几个输入数据的文本框,加上一个提交的按钮。像百度这样形式的检索器,很简单自动识别出来。这样或许你会 认为检索器很简单自动构造,其实不然。现在的网页越来越美观,很少有页面还是用法那种原始的检索样式,不信你看:这个检索器几乎是无法自动识别的。起码我临时没有看到或者想到方法自动识别。虽然有的检索器无法自动识别,但检索器绝对都是可以人工识别的。所以,一定可以设置一个可以配置的检索器。这就是我们蜘蛛设计的第一步:检索器的配置。检索器对于外界来说,就是一个不断产生衔接哀求地址的机器,直到没有可以产生的为止。它产生的地址

2、可以认为由4部分组成:1)哀求的url地址;2)哀求 的办法;3)哀求的参数;4)发送哀求的编码。这几部分对于讨论过的人来说,应当很简单理解。本处不作过多解释。2.2 页面猎取我们首先用检索器得到一个哀求的地址,接着就是发送这个哀求地址,得到对应的页面信息。为了得到页面信息,我们需要一个强壮的http文件(页面)下载器。为什么这么说呢?第一,无数网站都是需要登陆才干够拜访到机密信息 的, 故你的下载器必需支持cookie;其次,网页编码识别是一个难题,下载器需要仔细的处理这个方面的问题;第三,http的其它各种标准也需要支持,比 如,页面跳转的支持;第四,其他特殊的需求,比如,对于下载数据格式

3、的限定(如只下载文本文件)。基于这4个方面和其他某些方面的考虑,我们建立了蜘蛛的 第一个项目:httpdownloader。httpdownloader 项目介绍:这个项目重点解决了网页编码的识别问题(这个问题是没有完善解决计划的,我们只能够从unicode标准中定义的utf标准的解释里面找到一些额外的办 法。固然了,刚好有些开源的代码能够支持挺直分析二进制数据对应的文本属于哪国文字,这个也是一个不错的补充。)其它问题大部分都是靠开源库搞定,少部分 自己写代码搞定,都没有什么自得的地方值得议论。另外,在举行大量测试之后,发觉实际状况中有各式各样的问题,比如,哀求url编码就是其中的一个问题。

4、默认状况下,url编码应当用法utf-8,可是,国内的网站无数都是要求gb2312编码的,或者说utf-16编码。假如贸然认为都是utf-8的 话,就会碰到连baidu的页面都无法正确获得的问题。这个只是冰山一角,还有好几个这类型的问题,都是和中国国情不兼容。顺便说一句,这个项目主要以httpclient 作为底层。2.3 页面解析虽然我个人曾经用c写过html代码dom树解析的程序,但我们还是用法了开源的东西来做页面解析。htmlparser和nekohtml明显是做页 面解析的2个最出名最好的开源库。不过,它们都有不少的缺点(不兼容),当你碰到后,你需要修改它们的代码,让他们能够正确的运作

5、。这里举个例子解释一 下:基本的htmlparser(最新版本的,2006年9月)无法解析下面的代码:very!由于它竟然没有识别strong标签!假如比较一下nekohtml,你或许会感觉到nekohtml才像专业人士写的代码,而htmlparser有点业余。其实呢?。nekohtml并不是很好很好。我们知道balance是nekohtml最自得的地方,由于其他的解析都是扩展的别人的代码。但是,作者身处在一个有 序的环境之中,并不需要考虑过多的容错性问题,这挺直导致了balance做的很普通(对于中国国情来说)。举个容易例子:testie和ff会说明为:test,而nekohtml则说明为t

6、est虽然我自己也感觉htmlparser过于业余,但是,它做的是一个比较有扩展性的框架,这点比nekohtml强。另外,它对加密script也举行了相关处理。综合起来看,假如你只是需要举行html解析,你就该用法htmlparser;假如你需要对js举行处理,你就需要用法nekohtml,不然,你会碰到无数没有html也没有body标签的网页。为了解决nekohtml和htmlparser的一些问题和提高容错度,我们建立了2个新的项目:nekohtml2007 和htmlparser2007 ,它们特地用来解决这2个开源项目的bug(虽然我很希翼那些库的作者能够出来解决这些bug)。2.4

7、页面js解析至于为什么要处理js,你可以容易的拜访, 然后看看源文件。明了了吧?现在无数网站的页面都是用法js构建出来的,更不用说那些用法web2.0(ajax)技术的网站了。一个强壮的有竞争力的商 业垂直搜寻引擎,不支持这种东西是不可的。最基本的支持js的办法是用法ie或者ff(firefox)用法的借口,调用它们解析页面,不过,这种办法的 扫瞄速度超慢,不行能成为一个搜寻引擎的挑选。所以,必需自己想方法做一个支持的库出来(忽视图像渲染部分,能够加快构建速度和处理时光)。说支持js简单,可是,到底该怎么支持呢?好在我多年前关注js的时候,已经关注过一个叫spidermonkey的东西了。它的

8、java版本叫 rhino。现在rhino已经整合到jdk1.6里面了,所以,各位不用再去下载它了。rhino它是一个js脚本的说明运行库。但它并不支持dom树 (由于js事实上和html已经没有任何关系了,js更多的时候用在脚本处理里面,这点和vbscript有点像)。为了让它支持dom树,需要我们自己 举行扩展。讨论一番rhino,再讨论一番其他用法了rhino的开源项目(特殊推举你看看htmlunit 项 目的源代码,最新的htmlunit1.13已经可以比较好的支持js的解析了,假如你只是做点基本的小应用,可以用它来做js方面的问题),你就应当能 够找到思路了。剩下的就是艰苦的编程了,很无趣的工作,由于你需要满足ie的规范,也要满足ff(dom1-dom3)的规范。做好js的解析之后,你还可以考虑css的解析,css的解析目前没有发觉特殊好的开源工具。一切完备之后,就是把它们组合起来,构建一个模拟ie和ff 的扫瞄器了(没有图形界面,所以,速度飞速)。扫瞄器支持的额外功能可能要按照自己的需要来定了。为了解决js的问题,我们建立了一个browser 的 项目。browser项目模拟了ie的工作方式,主要是2个方面的处理:1)cookie的处理;2)js的处理。cookie的处理大部分由底层处理, js的处理包含了js的解析、js的运行、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论