快速业务通道

dySE:一个Java搜索引擎的实现,第1部分 - 网络爬虫 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
各部分的内部实现。

有了上述的对与搜索引擎的整体了解,我们来学习 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. 网页数据抓取

URL url = new URL(“http://www.xxx.com”); URLConnection conn = url.openConnection(); BufferedReader reader = new BufferedReader(new  InputStreamReader(conn.getInputStream())); String line = null; while((line = reader.readLine()) != null)    document.append(line + "\n"); 

使用 Java 语言的好处是不需要自己处理底层的连接操作,喜欢或者精通 Java 网络编程的读者也可以不用上述的方法,自己实现 URL 类及相关操作,这 也是一种很好的锻炼。

dySE:一个Java搜索引擎的实现,第1部分 - 网络爬虫(3)

时间:2010-11-20 IBM 董宇

网页处理

收集到的单个网页,需要进行两种不同的处理,一种是放入网页库,作为后 续处理的原始数据;另一种是被分析之后,抽取其中的 URL 连接,放入 URL 池 等待对应网页的收集。

网页的保存需要按照一定的格式,以便以后数据的批量处理。这里介绍一种 存储数据格式,该格式从北大天网的存储格式简化而来:

网页库由若干记录组成,每个记录包含一条网页数据信息,记录的存放为顺 序添加;

一条记录由数据头、数据、空行组成,顺序为:头部 + 空行 + 数据 + 空行 ;

头部由若干属性组成,有:版本号,日期,IP 地址,数据长度,按照属性名 和属性值的方式排列,中间加冒号,每个属性占用一行;

数据即为网页数据。

需要说明的是,添加数据收集日期的原因,由于许多网站的内容都是动态变 化的,比如一些大型门户网站的首页内容,这就意味着如果不是当天爬取的网页 数据,很可能发生数据过期的问题,所以需要添加日期信息加以识别。

URL 的提取分为两步,第一步是 URL 识别,第二步再进行 URL 的整理,分 两步走主要是因为有些网站的链接是采用相对路径,如果不整理会产生错误。 URL 的识别主要是通过正则表达式来匹配,过程首先设定一个字符串作为匹配的 字符串模式,然后在 Pattern 中编译后即可使用 Matcher 类来进行相应字符串 的匹配。实现代码如下:

清单 2. URL 识别

public ArrayList<URL> urlDetector(String htmlDoc) {    final String patternString = "<[a|A]\\s+href= ([^>]*\\s*>)";    Pattern pattern = Pattern.compile (patternString,Pattern.CASE_INSENSITIVE);    ArrayList<URL> allURLs = new ArrayList<URL> ();    Matcher matcher = pattern.match

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号