dySE:一个Java搜索引擎的实现,第1部分 - 网络爬虫 - 编程入门网
各部分的内部实现。
有了上述的对与搜索引擎的整体了解,我们来学习 dySE 中爬虫模块的具体 设计和实现。 dySE:一个Java搜索引擎的实现,第1部分 - 网络爬虫(2)时间:2010-11-20 IBM 董宇Spider 的设计 网页收集的过程如同图的遍历,其中网页就作为图中的节点,而网页中的超 链接则作为图中的边,通过某网页的超链接 得到其他网页的地址,从而可以进 一步的进行网页收集;图的遍历分为广度优先和深度优先两种方法,网页的收集 过程也是如此。综上,Spider 收集网页的过程如下:从初始 URL 集合获得目标 网页地址,通过网络连接接收网页数据,将获得的网页数据添加到网页库中并且 分析该网页中的其他 URL 链接,放入未访问 URL 集合用于网页收集。下图表示 了这个过程: 图 3. Spider 工作流程 Spider 的具体实现 网页收集器 Gather 网页收集器通过一个 URL 来获取该 URL 对应的网页数据,其实现主要是利 用 Java 中的 URLConnection 类来打开 URL 对应页面的网络连接,然后通过 I/O 流读取其中的数据,BufferedReader 提供读取数据的缓冲区提高数据读取 的效率以及其下定义的 readLine() 行读取函数。代码如下 ( 省略了异常处理 部分 ): 清单 1. 网页数据抓取
使用 Java 语言的好处是不需要自己处理底层的连接操作,喜欢或者精通 Java 网络编程的读者也可以不用上述的方法,自己实现 URL 类及相关操作,这 也是一种很好的锻炼。 dySE:一个Java搜索引擎的实现,第1部分 - 网络爬虫(3)时间:2010-11-20 IBM 董宇网页处理 收集到的单个网页,需要进行两种不同的处理,一种是放入网页库,作为后 续处理的原始数据;另一种是被分析之后,抽取其中的 URL 连接,放入 URL 池 等待对应网页的收集。 网页的保存需要按照一定的格式,以便以后数据的批量处理。这里介绍一种 存储数据格式,该格式从北大天网的存储格式简化而来: 网页库由若干记录组成,每个记录包含一条网页数据信息,记录的存放为顺 序添加; 一条记录由数据头、数据、空行组成,顺序为:头部 + 空行 + 数据 + 空行 ; 头部由若干属性组成,有:版本号,日期,IP 地址,数据长度,按照属性名 和属性值的方式排列,中间加冒号,每个属性占用一行; 数据即为网页数据。 需要说明的是,添加数据收集日期的原因,由于许多网站的内容都是动态变 化的,比如一些大型门户网站的首页内容,这就意味着如果不是当天爬取的网页 数据,很可能发生数据过期的问题,所以需要添加日期信息加以识别。 URL 的提取分为两步,第一步是 URL 识别,第二步再进行 URL 的整理,分 两步走主要是因为有些网站的链接是采用相对路径,如果不整理会产生错误。 URL 的识别主要是通过正则表达式来匹配,过程首先设定一个字符串作为匹配的 字符串模式,然后在 Pattern 中编译后即可使用 Matcher 类来进行相应字符串 的匹配。实现代码如下: 清单 2. URL 识别
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |