《2486.网页信息抽取模块研制.doc》由会员分享,可在线阅读,更多相关《2486.网页信息抽取模块研制.doc(24页珍藏版)》请在三一办公上搜索。
1、专科毕业设计(论文)设计题目: 网页信息抽取模块研制 系 部: 信息工程系 专 业: 微机应用 班 级: 姓 名: 学 号: 指导教师: 职 称: 讲师 2009年6月 南京摘 要垂直搜索引擎和普通的网页搜索引擎的最大区别是垂直搜索引擎对网页信息进行了结构化信息抽取,因此信息抽取技术成为了构建垂直搜索引擎的核心技术。本文首先简介4种Web的信息抽取技术,然后结合Jtree和Xpath技术来实现动态网页信息抽取系统.关键字:信息抽取;垂直搜索引擎;结构化信息提取;JTree;XPathAbstractThe difference between search engine and simple
2、search engine is that Plumb search engine structed the file that catch,and the search information become the core technology to build the Plumb search engine.This article talk about four different technology for web search first,and then combine the Jtree with xpath to build this search system.Keywo
3、rds: Information search;Plumb search engine;structed information extraction;Jtree;xpath;目 录引 言5第一章 开发概述61.1研究背景和意义6第二章 Web信息抽取相关技术72.1垂直搜索引擎中的信息抽取技术的选用72.2 几种Web的信息抽取技术简介72.3 JTidy简介102.4 XHTML简介11第三章 系统分析与设计123.1需求分析123.2系统设计123.2.1网页抓取功能123.2.2 样本页转换成XHTML功能123.2.3 XHTML转换成XML功能133.2.4 XpathViewer
4、解析器133.2.5 XSLT解析器文件133.2.6 提取信息13第四章 信息抽取系统的实现1441 解析页面并生成Jtree1442 抽取规则的生成算法生成1543 根据Xpath生成XSLT文件17第五章 试验185.1 获取抽取页面并测试18总结21致谢23参考资料引 言随着互联网信息的不断增长,人们越来越多地使用搜索引擎来寻找自己需要的信息。研究表明,搜索引擎所能搜索到的信息资源只是能被其建立索引的部分,而很多信息资源不能被搜索引擎索引到。比如专利、文献数据库内的信息,往往需要人们通过查询表单来进行访问。实际上这些不能被搜索引擎索引到的信息内容更加专门化并具有更高的价值。其次,搜索引
5、擎主要是从大量的文档集合中找到与用户需求相关的文档列表;而信息抽取系统则旨在从文本中直接获得用户感兴趣的事实信息。用户对直接获取有用信息的需求越来越强烈。第一章 开发概述1.1 研究背景和意义信息抽取系统则旨在从文本中直接获得用户感兴趣的事实信息。在实际的情报研究中,需要进行统计分析的对象是网页或者文本中特定字段的内容,而不是整个网页或者文本本身。为了能够更有效地支撑情报研究工作,方便地获取和利用这部分信息,需要设计专门的信息抽取、解析工具等对这些信息资源进行抽取和整理。本文所要介绍的就是一个实现了信息自动抽取的系统,与其他信息抽取程序比较,这个系统在使用界面上对用户更加直观友好,在抽取功能上
6、实现了动态的包装器自动生成,即对不同的信息资源都能自动生成对应的抽取程序。通过分析这些不能被搜索引擎索引到的网页信息,发现有以下两方面的特点:a动态网页或网页的动态生成。这些网页并不稳定存在于服务器端,只有当用户通过访问接口访问资源数据库时,服务器才动态生成这些网页并产生一个含有用户信息变量在内的URL地址指向这些页面。这也是其很难被搜索引擎索引到的原因。b网页结构上的一致性。这些由数据库生成的网页在减轻网站的页面维护负担的同时,按网页模版批量生成的页面在结构上是基本一致的。垂直搜索引擎就是针对性的为某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息检索服务,如购物搜索、房产搜索、
7、人才搜索、地图搜索、mp3搜索、图片搜索、中文论坛搜索。垂直搜索引擎和普通的网页搜索引擎的最大区别是它对网页信息进行了结构化信息抽取,也就是从网页的某些非结构化数据中抽取出特定的结构化信息数据;如中文论坛搜索引擎中的结构化信息可表示为:标题,作者,发布日期,阅读次数,回复次数,Url链接,帖子摘要。垂直搜索是以结构化数据为最小单位,然后将这些数据存储到数据库中;而普通的网页搜索引擎是以网页或网页块为最小单位的。所以web结构化信息抽取的技术水平是决定垂直搜索引擎质量的重要技术指标,因此结构化的信息抽取技术成为了垂直搜索引擎的关键技术之一。第二章 Web信息抽取相关技术21垂直搜索引擎中的信息抽
8、取技术的选用结构化信息抽取技术,有三种方式,第一是模板方式;第二就是结构化信息抽取方式;第三就是两种方式互取长处的结合。模板方式是针对网页进行模板设定或者自动生成模板的方式抽取数据,对网页的采集也是针对性的采集,适合规模比较小、信息源少且稳定的需,优点是快速实施、成本低、灵活性强,缺点是后期维护成本高,信息源和信息量小。结构化信息抽取方式和模板方式最大的区别是对具体网页不依赖,可针对任意正常的网页进信息采集信息抽取,这就导致这种方式数据容量上和模板方式有质的区别,但是其灵活性差、成本高。但是这两种方式并不是对立的,这两者对于垂直搜索引擎来说是相互补充的。2.2 几种Web的信息抽取技术简介本节
9、探讨4种Web信息抽取技术:基于包装器(Wrapper)的信息抽取、基于隐马尔可夫模型(HMM)的信息抽取、DIPRE抽取、基于Web视觉分析的信息抽取。包装器是一个程序,用于从特定的信息源中抽取相关内容,并以特定形式加以表示。在Web环境下,包装器的目的是把网页中储存的信息用结构化的形式储存起来,以方便进一步的处理。包装器可接受针对特定信息源的查询请求,并从该信息源中找出相关的网页,然后把需要的信息提取出来返回给用户。它由一系列的抽取规则以及应用这些规则的计算机程序代码组成。通常,一个包装器只能处理一种特定的信息源。实际上包装器方法属于我们前面所讨论的基于模板的方法。包装器可由程序员直接编写
10、,或手工指定网站结构再由程序自动生成规则和代码。一种书写包装器的方式就是采用标准的Xml语言,Xml有易学易用、开放的国际化标准、高效可扩充等特性,因此使用起来十分方便。然而针对不同网站编写规则的过程是费时费力的,而且网页的结构经常变化,新网页层出不穷。这样,必须建造新的包装器。为此,Web信息抽取的研究转向了半自动和自动生成包装器的工作上。包装器归纳法是用机器学习方法自动生成分装器的方法。在归纳法中,包装器的生成被看成是归纳学习的问题,其任务是从一组例子中计算出一般规则,以解释观察到的事实。归纳逻辑编程(ILP)是包装器生成中常常用到的方法。基于隐马尔可夫模型(HMM)的信息抽取可以有效地体
11、现时域或空域上的随机概率过程,己经成功地应用于语音识别和手写体识别。在信息提取中,HMM用状态对应提取域,状态的词表对应每个域出现的符号,用状态之间的转换对应各个域之间的位置关系。最初的HMM构造是通过观察样本手工构造。或用一个状态对应一个域,或用几个状态对应一个域,然后通过对概率的调整来获得较好的效果。现在的HMM构造一般是采用自动构造,如“Cora计算机科学研究论文搜索引擎”,利用HMM提取每篇论文的头部信息,包括标题、作者、关键词等。用HMM来进行信息提取的一般途径是:每个域(提取的每个语义项)对应一个或多个状态,原始文本中的符号作为状态的输出符号,如果模型给定,那么信息提取过程就是搜索
12、最可能创建符号序列的状态序列,这个问题可以由Viterbi算法解决。DIPRE方法的英文全称为Dual Iterative Pattern RelationExtraction,该方法由以下5步组成: 用户指定包含少量数据的样本。 在信息源中找到样本中所有数据在信息源中出现情况的上下文信息,并且保存这些信息。 根据前面所保存的信息来产生关系模式,这一步是所有步骤中最重要的,它既要能从与上下文信息相似的集合中产生模式,又要有较低的错误率,还要尽可能的增加模式的覆盖率。 根据产生的模式再次搜索信息源,以获得更多的要抽取的信息。 如果要抽取的信息的数量已经满足要求则停止算法的运行,否则重复25步。基
13、于Web视觉分析的信息抽取的主要依据是在同一个网页中待提取信息在视觉样式上往往有着相同的特征,且待提取信息在视觉样式与其它信息有着明显的分隔符;根据这一原则该方法首先就是要找出这些可视化的线索,然后再根据这些线索来进行信息抽取。为此,可将Html元素分成以下几类:1简单对象:不能包含其它htrnl元素的元素,如、等;2容器对象:由至少一个简单对象和其它容器对象组成的html元素,如;3分组对象:全部由简单对象组成的元素该方法首先分析简单对象的视觉特征,然后在从里层到外层依次分析分组对象或容器对象,它的难点在于分析过程中既有精确的分析又有模糊分析;网页分析完成后再对结果进行频率分析,以推导出哪些
14、对象是要抽取的信息。Web页面信息提取的效率的评价指标主要有以下两个: 页面信息提取的准确率,页面信息提取的准确率Pr定义为:Pr=ce(ce+fe);其中,ce表示从Web页面中提取的信息数量, 表示存在于Web页面中被系统提取出的错误的web页面信息的数量。 信息的发现率。页面信息的发现率Re定义为:Re=ce(ee+te),其中ee表示从Web页面中提取的信息数量,te表示存在于Web页面中但没有被系统提取出的信息文本数量。本文实现的系统是建立在动态网页结构相同的基础上的。对于这些具有相同结构的网页集合只需带取其中一个页面作为样本进行分析,自动生成包装褰对象,就可以对整个具有相同结构的网
15、页集合进行信息抽取工作。 系统模型如图1所示。 图1 系统抽取模型 整个系统的工作流程如下:从动态网页集合中任选一个样本页面,由样本页面解析程序对其解析,生成 个树型结构以供用户标记出感兴趣的节点,然后系统读取树上被用户标记过的节点,通过算法自动生成信息抽取规则并封装到包装器对象内,对于该动态网页集合,都可以用这个包装器对象进行自动的信息抽取,输出用户感兴趣的信息域的内容。这个系统模型的实质是描述了一个包装器对象的自动生成过程。在系统中,通过对原始网页进行取样 ,生成JTree提供给用户进行标记,针对用户的标记信息通过算法分析自动生成包装器对象用于对整个网页集合进行信息抽取。从待抽取资源中取样
16、,是为了分析样本页面中人们所需要的信息内容在页面中的位置分布以生成对应的包装器对象。而实际上样本页面的HTML源代码是用于客户端浏览器解释执行的使用目的,因此人们所关心的信息内容往往和大量无关代码及标签混杂在一起。对此,这里使用了一个树型结构来重新组织并展示样本页面的结构特征,方便用户将待抽取的信息内容标记出来。系统采用JTree来实现这个树型结构,JTree是Java语言中的一个GUI组件,使用JTree来表示样本页面的结构,一方面使用户可以直接在样本页面上标记需要的信息内容;另一方面由于树型结构本身的特点,可以比较方便地由用户标记的信息生成信息抽取规则并封装成包装器对象。在本系统中,使用X
17、Path表达式的形式来描述信息抽取规则。对于XML文档,XSL(可扩展样式表语言,Extensible Stylesheet LaJ1一guage)使用XPath来标识XML文档中的元素位置。因此对整个动态网页信息集合,包装器对象首先将其转换成XML或XHTML的结构,然后就可以通过分析取样所生成的XPath形式的抽取规则把用户感兴趣的信息内容一一定位并提取出来。2.3 JTidy简介tidy 的中译, 就是整齐的, 而我们对于 HTML 这种纯粹 tag 组合而成的语言, 常常会犯下一些失误, 例如 Hello world , Tidy 这样子 的顺序错误. 或者是通过网页编辑器或转换器编排
18、十分凌乱, 根本无法阅读!因此, 当我们在开发程序, 尤其是网页程序设计时候, 更需要有这种工具来辅助, 先有好的排版方式, 开发程序就能够相对简单清楚, 更能够提升自己的效率. 而且 tidy 可以帮忙检查是否有 tag 的缺少或位置错误, 可以让我们马上除错, 不会在那边计算有几个 浪费自己的时间。2.4 XHTML简介XHTML 就是以 XML 技术为基础的 HTML, 标准的格式是 他的根元素是 默认的 namespace 是 http:/www.w3.org/1999/xhtml 在根元素之前要有 DOCTYPE 的申明. 所有的 tag 都是小写. 一定要有 , , , 及 这几个
19、 Struture tags 属性值需要用 双引号括起來 单一元素, 如 应该修改为 简单来说, XHTML 的出现, 就是为了取代 HTML, 因为 HTML 难以成为数据交换的格式, 目前正在制定 XHTML 2.0 之中. 以下我列出 XHTML 1.0 的标准范例 : test hello world 第三章 系统分析与设计3.1需求分析对于本网页信息抽取模块应该具有以下几个功能。网页抓取功能:用户可以根据url从因特网上抓取需要的网页来做信息输入源。样本页转换成XHTML功能:从因特网上抓取到的原始html网页结构上不规范,为了方便的遍历html中的标签,首先要对样本页面向XHTML
20、格式进行转化。XHTML转换成XML功能:我们需要将XHTML格式的文件转换成xml格式的文件,这样后面的java解析库可以对其进行解析,并生成我们需要的Xpath。XpathViewer解析器:用来将xml文件解析生成DOM树显示出来,这样用户就可以方便的定位到需要抽取的节点,并生成该节点对应的Xpath。XSLT解析器文件:将用户定位到的节点得到的Xpath集转换成XSLT文件。提取信息:准备工作都做完后,我们就可以根据XSLT解析器来对包含原始数据的xml文件进行解析,并提取出我们想要的信息了。3.2系统设计3.2.1网页抓取功能用户可以根据url从因特网上抓取需要的网页来做信息输入源。
21、抓取的网页需要预先进行GBK编码处理,然后再生成UTF-8编码格式的文件。3.2.2 样本页转换成XHTML功能从因特网上抓取到的原始html网页结构上不规范,为了方便的遍历html中的标签,首先要对样本页面向XHTML格式进行转化。使用Jtidy网页清洗工具将不规则的html文件转换成标准的、格式良好的Xhtml文件。3.2.3 XHTML转换成XML功能我们需要将XHTML格式的文件转换成xml格式的文件,这样后面的java解析库可以对其进行解析,并生成我们需要的Xpath。需要注意的是,需要将xhtml中doc文档声明给去除,要不然就是不合法的xml文件。3.2.4 XpathViewe
22、r解析器用来将xml文件解析生成DOM树显示出来,这样用户就可以方便的定位到需要抽取的节点,并生成该节点对应的Xpath。使用java的Jtree来展示DOM树,用户可以选择树中的节点,然后系统根据选择的节点来计算出其再DOM文档结构中的位置,再根据这个位置计算出其对应的Xpath。3.2.5 XSLT解析器文件将用户定位到的节点得到的Xpath集转换成XSLT文件。将经过XpathViewer解析器处理得到的Xpath集合作为抽取规则来生成对应的XSLT文件。3.2.6 提取信息准备工作都做完后,我们就可以根据XSLT解析器来对包含原始数据的xml文件进行解析,并提取出我们想要的信息了。第四
23、章 信息抽取系统的实现41 解析页面并生成Jtree样本页面解析程序的实现样本解析程序读取样本页面并生成JTree,这是一个遍历样本页面中HTML标签的过程。由于HTML结构上的不规范,为了方使地遍历HTML中的标签,首先要对样本页面向XML格式或XHTML格式进行转化。系统使用JTidy工具包把HTML源文件转换生成XML文档对象并得到文档对象根节docRcot,然后使用一个深度优先的遍历算法访问XML文档的子节点并将其加载到JTree的树根节点下,逐渐生成整棵JTree。实现生成JTree的算法如下。TreeNode makeTree(DoeNode docRoot)*由当前文档节点生成树
24、节点*TreeNode treeNode=new TreeNode(doeRoot);if当前文档节点有子节点n=子节点数目;for ix0 tO n遍历文档子节点if子节点doeNodei是叶子节点将该节点加副当前树节点treeNode下;else子节点doeNodei有下级节点递归调用本方法makeTree(doeNodei);将递归返回的树节点加到当前树节点treeNode下;if当前文档节点没有子节点return 当前树节点;以上是一个递归的方法,读取的参数docRcot即为样本页面XML化后的文档根节点,返回的参数treeNode是生成的JTree的当前根节点,JTree的所有子节点
25、都已经在上述方法的递归遍历中加载到返回的树节点下。最后只需要调用JTree的默认构造方法加载这个节点就生成了整棵JTree,具体实例如图4-1所示。 图4-1 由样本页面生成的JTree具体实例系统读取样本页面然后生成JTree提供给用户,由用户直接在JTree上标记感兴趣的信息内容(树的节点)。如图2所示,这是一份由专利信息样本页面生成的JTree,用户标记了公司名、发布时间、招聘职位等节点作为待抽取的对象,下一步,系统将根据用户的标记自动生成针对这些标记对象的抽取规则。42 抽取规则的生成算法生成抽取规则的算法是包装器的核心,这里使用的是XPath表达式形式的抽取规则。系统通过用户标记节点
26、的信息自动生成抽取规则并封装到包装器中,如此动态地构造包装器对象可以满足不同抽取信息来源的需要。系统使用JTree的getSelectionPaths()方法获得用户标记节点的路径。例如图2中被标记的“公司”节点,它在JTree中的路径输出是#document,html,body,table,tbody,tr,td,直接转换成XPath路径就是htmlbodytabletbodytrtd。但这个XPath路径并不能保证抽取程序准确定位到用户指定的节点。如前面得到的XPath路径htmlbodytabletbodytrtd,并不唯一表示“公司”节点的位置,它也同样表示图2中“名称:”节点等,在这
27、里对这些由标记节点直接得到的XPath路径为基本路径。为了能够取得用户标记节点的准确XPath路径,系统在此使用一个筛选算法排除基本路径下所有不符合的节点,算法如下。List parse()rule=抽取规则集合;*选出所有符合基本XPath路径的节点*nodeList=符合基本XPath路径的节点列表;n=符合基本XPath路径的节点数;m=用户标记的节点数;0 to n遍历验证每一个节点valueNi=节点nodei的值;f0I j=0 to m遍历用户标记节点的值if valueNi与用户标记节点的值valueTi相等xPath=节点nodei的准确XPath路径ruleadd(xPat
28、h);添加这条规则end ifendforendforreturn rule;返回抽取规则集合算法的基本思路是根据JTree上用户标记得到的XPath基本路径枚举出所有符合的节点,然后将这些节点的值与用户标记节点的值比对,当相等时说明这个节点就是用户标记的节点,使用该节点对象的getUniquePath()方法就得到准确的XPath路径。使用上述算法可以计算出图4-2中用户标记的3个节点的准确XPath路径是:htmlbodytable4tbodytr2td2htmlbodytable4tbodytr3td2htmlbodytable4tbodytr3td4方括号内的数字表示该节点是其父节点的
29、第几个子节点,从图2中验证可知这个路径是准确并能唯一确定用户所标记的节点位置的。43 根据Xpath生成XSLT文件针对不同的待抽取资源,包装器工厂读取样本页面,构造出不同的XSLT来进行信息抽取。因此,包装器工厂实际上也就是根据抽取规则的Xpath生成抽取程序的XSLT文件模块。根据将样本页面作为输入参数,返回生成的包装器对象。该包装器对象由两个部分组成,一个是访问待抽取资源的接口,一般是个爬虫程序(Crawler),另一部分就是本文所讨论的包装器的核心、抽取规则及算法。解析器封装了XPath形式的抽取规则(rule对象),并根据规则使用extract()方法进行抽取工作,例如对于图2中用户
30、标记的3个节点进行抽取,实现代码如下。void extract(Document doc)name = doc.selectSingleNode(rule.get(1).getStringValue();pubNum = doc.selectSingleNode(rule.get(2).getStringvalue();pubDate = doc.selectSingleNode(rule.get(3).getStringValue()doc参数是待抽取的文档对象,rule对象是通过解析用户在JTree上的标记的节点而得到的XPath路径集合。将这个路径应用到待抽取资源集合上,使用dom4j工
31、具包实现的selectSingleNode(Xpath expression)方法取得标记位置上的节点对象,并调用getStringValue()方法获取节点的值,也就是用户所需要的信息内容。第五章 试验5.1 获取抽取页面并测试对51JOB上发布的招聘职位数据进行抽取试验,通过爬虫获取100个页面作为待抽取信息集,任选一个页面作为样本并标记页面上所有与职位有关的信息。待抽取的页面如下:经过清洗处理后,如下:将清理后的页面作为原始信息加载到Xpath Viewer中,并添加需要抓取的信息规则:对包装器抽取结果进行人工验证,试验结果如下:包装器抽取结果抽取的准确率描述的是抽取出的信息内容是否和标
32、记的内容一致程度。造成不一致的原因是页面结构的差异性。如果某个待抽取信息的位置在某个页面上比其他页面有偏移,那么利用XPath定位的抽取规则所能定位到的是原位置上不相符的信息内容。例如标记的节点有公司网址,包装器根据该标记抽取的信息集合应该就是公司网址。而实际抽取出的信息中可能就没有公司网址,公司网址为空或者是不相关的页面信息。以上实验是在标记所有节点、抽取所有相关信息内容的条件下进行,而在实际情况中,用户可能只需要页面上几项信息内容,在这种情况下准确率会有进一步的提高。总 结针对动态网页这种网络资源的信息抽取工作,系统主要有以下两个方面的优势:一是对用户的友好性。抽取信息的使用者,比如情报分
33、析人员,本身往往不懂得设计抽取程序。在需要对某种信息资源进行抽取时,用户首先要与抽取程序设计人员进行沟通,设计人员再根据用户的需求,分析待抽取的资源的结构、设计程序、生成包装器等,然后进行抽取工作把抽取的信息提交给用户或者让用户自己运行抽取程序。而本系统通过一个树型界面直接让用户标记所需要的信息内容,然后自动将标记信息翻译成抽取规则并开始抽取工作,完全不需要程序设计人员的干预。另一个优点是包装器的动态生成技术。用户所感兴趣的往往不止一种信息资源,比如需要的信息可能分布在多个数据库内。这种情况下,普通的抽取工作需要对每一个信息源进行分析并设计抽取程序。而本系统通过包装器动态生成技术,充分满足用户
34、各种需求。针对不同的待抽取资源,系统读取样本页面给用户进行简单的标记,然后根据标记信息自动生成包装器程序并完成抽取工作,节省了人力,提高了效率。实际上本应用对象范围有限,并且其网页结构比较固定。而面对更多网页结构差异巨大的资源库,如何提高系统抽取准确率,使系统更具有通用性,则需要更深入的研究。本系统的XpathViewer,用户再从Jtree树中选择需要抽取信息的节点时,需要用户一个一个节点的定位下去,这样比较麻烦,且效率不高,如何让用户输入要抽取的信息的相关内容,让系统直接定位到相关节点是下一步需要研究的。从项目的立项到最终的完结,在老师的指导和公司同事的帮助下,自己也专研系统开发一些技术。
35、经过三个月的努力开发,本项目相对顺利的全面完成。系统具有效率高、可维护性强、实用性和可靠性高等特点。一个项目要想做的好,在我个人看来,对技术的掌握是基础;对业务和所涉及问题或需求要清晰分析和熟悉是重要的;最关键的是自己要有足够的意志和信心把项目一步一步做下去。细心也是必要的,在对问题的总结要详细而全面,最求一次编写的的境界。对开发过程中遇到的各种问题要善于积累,还要培养多方法、多视角解决问题的能力!此次的项目开发,不仅让自己在专业技术上学到了许多不曾在课本或老师那里学到的很多实用性技术,而且在业务上了使自己对网上购物以及网站建设有了更多、更广泛的了解。致 谢在这次毕业设计中,我得到了 老师的细
36、心的指导,在此,我表示衷心的感谢,感谢您对我的关爱以及大力支持。同时也感谢我的同学和同事们热情帮助以及我所在实习公司的大力支持!在你们的关照下我的毕业设计和毕业论文才会顺利的完成。马上就要踏上工作岗位,本文也算是我人生的一段总结。真心的感谢所有传授给我知识的敬爱的老师们。在你们的精心教导下,我度过了一段充实、精彩的大学生活,谢谢你们!参 考 文 献【1】徐明华 编著.Java Web整合开发与项目实战.北京:人民邮电出版社,2009年2月【2】李跃贞、常春英编著. 网页制作案例教程.北京:航空工业出版社,2008年5月【3】李红 主编. 网页设计与制作.南京:东南大学出版社,2005年1月【4
37、】邱哲 符滔滔 编著. 搜索引擎.北京:人民邮电出版社,2007年6月【5】李云程 主编. 网页设计与制作.北京:科技出版社, 2008年7月【6】(美)Elliotte RustyHarold编著. Java.Network.Programming.Third.Edition. OReilly, 2004年11月【7】(美)ScottOaks, HenryWong.Java.Threads.3rd.Edition,OReilly,2004年9月【8】(美)WilliamCrawford, JonathanKaplan编著. J2EE Design Patterns. OReilly,2003年9月【9】王津涛 编著. HTML.CSS.JavaScript整合详解.北京:机械工业出版社,2009年1月【10】(美)Nicholas C. Zakas编著. Professional JavaScript for Web Developers.美国: apress,2003【11】David Flanagan编著. javascript权威指南第五版. 美国: apress,2006年【12】邵丽萍编著. 网页编程技术.北京:清华大学出版社,2002年