《硕士论文-支持AJAX的互联网搜索引擎爬虫设计与实现.doc》由会员分享,可在线阅读,更多相关《硕士论文-支持AJAX的互联网搜索引擎爬虫设计与实现.doc(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、浙江大学硕士学位论文支持AJAX的互联网搜索引擎爬虫设计与实现姓名:罗兵申请学位级别:硕士专业:计算机应用导教师:陈刚20070514AbstractWeb Crawler is an important component of Search Engine, web developers build applications that are easier to use and more fimctional than traditional Web programs by using AJAX technologies, which create web pages witii Async
2、hronous JavaScript and XML. AJAX changes the content of web pages dynamically after getting the data from web server by sending die request asynchronously. As a result, the data that the traditional web crawler collects is less than the data presenting in the web browser. We propose a new web crawle
3、r -Aj 狀Crawler, which supports AJAX.The AjaxCrawler is composed of crawling web page, analyzing web page, interpreting JavaScript, invoking DOM operation methods,regenerating web page. First, ciawl the web page by request, second, analyze the page element, not only the links,but also the JavaScript
4、code and file in the page, then, execute the JavaScript code, which include the AJAX request, gets the result from server and invoking DOM operation methods to change the content of web page, at last, regenerate the web page and extract the links.According to the experiment, the content crawled by A
5、jaxCrawler is more than traditional crawler at the same condition.图目录图1-1搜索引擎的体系结构4图2-1传统爬虫的工作流程8图2-2抓取策略9图2-3基于分类器聚焦爬虫体系结构10图24基于数据抽取器的聚焦爬虫体系结构11图2-5基于用户学习的聚焦爬虫体系结构12图2-6系统结构E13图3-1同步交互上和异步交互下的比拟B】18图3-2传统Web应用和基于AJAX的Web应用的比拟11319图3-3网易博客的毎日推荐页面呈现22图34网易博客每曰推荐的页面源码片段22图3-5支持AJAX的爬虫总体结构23图4-1网页分析流程
6、34图4-2 JS解释器的结构36图4-3 DOM层次结构38图44W3C的DOM接口继承关系39图4-5 Node节点的方法39图4-6提取页面中超链接的流程40图5-1 AjaxCrawler抓取的超链接数一网易博客42图5-2传统爬虫抓取的超链接数一网易博客42图5-3AjaxCmwler抓取的超链接数一新浪博客43图5-4传统爬虫抓取的超链接数一新浪博客43图5-5 AjaxCrawler抓取的超链接数一百度博客44图5-6传统爬虫抓取的超链接数一百度博客45图5-7 AjaxCrawler抓取的超链接数一debian45图5-8传统爬虫抓取的超链接数一debian46图5-9抓取链接
7、数比照47图5-10抓取时间比照47表目录表 3-1 XML Reques谢象方法20表 3-2 XML Request对象属性20表4-1 URL类的方法说明31第1章绪论21世纪是信息时代,随着信息科学技术的不断开展,网络已成为人们生活中 的重要组成局部,因特网作为信息交流的中心与枢纽作用愈显重要。因特网是全 球最大的分布式信息库,拥有众多但却杂乱无章的信息,并且这些信息呈几何级 数增长。如何快速、准确地查找所需要的信息,成为人们迫切需要解决的问题。 搜索引擎应运而生,而作为搜索引擎一局部的网络爬虫起着重要作用,爬虫 抓取页面的数量和质量对搜索引擎的查询结果影响很大。Web 是为了区别于过
8、往的以门户为代表的Web 的称呼,Web 2. 0只 是一个符号,它说明的是正在变化中的互联网,这些变化相辅相成,彼此联系在 一起,它让社会性、用户、参与和创作这些元素浮出水面成为互联网文化的中坚 力量。Web 的最大特点是个人化、去中心化,同时强调社会化,强调开放、 共享,强调参与、创造。根本上Web 的绝大局部效劳都存在一个个人标识明 确的页面。ffeb 的最大改变就是普通人开始改变、创造网络,草根性质的、 业余性质的参与。Web 要凸现每个用户的价值,每个人在互联网上都可以创 造自己的价值。近年来,随着Web 的兴起,在Web开发中运用AJAX技术的网站越来越 多,这些技术的应用带来了更
9、好的用户体验、很多新概念和Web in设计,同时, 由于AJAX技术可以动态改变页面内容,改变了传统Web页面的结构,导致单纯 抓取静态Web页面的网络爬虫抓取的内容少于页面呈现的内容,这些动态内容给 网络爬虫的设计带来极大挑战。本论文所涉及的课题一一“支持AJAX的互联网搜索引擎爬虫设计与实现, 正是在综合考虑上述开展趋势、需求因素的根底上提出的,设计实现了支持AJAX 的网络爬虫原型系统AjaxCrawler。AjaxCrawler是基于传统爬虫,实现了 JavaScript 解释器、DOM支持的新一代爬虫,其核心在于获取AJAX异步请求返回的数据, 并通过这些数据生成真正的页面内容,从而
10、抓取到更多的内容。搜索弓I擎2(Search Engine)是为满足人们对网络信息的搜索需求而开展起 来的技术,搜索引擎以一定的策略利用网络自动搜索功能,对各种信息资源分门 别类地进行索引、建库,并对信息进行分析、提取、组织和处理,从而起到信息 导航的作用,帮助人们从不同形式的数字化信息中进行搜索。搜索引擎起源于传统的信息全文检索理论,狭义上的搜索引擎仅指基于因特 网的搜索引擎;广义上的搜索引擎除此之外还包括基于目录的信息检索效劳。搜 索引擎的研究极具综合性和挑战性,它涉及到信息检索、人工智能、计算机网络、 分布式处理、数据库、数据挖掘、数字图书馆、自然语言处理等多领域的理论和 技术。1.2.
11、2分类按照信息搜集的方法和效劳提供方式的不同,搜索引擎主要分为三大类-全 文搜索引擎(Full Text Search Engine),目录式搜索引擎(Search Index/Directory)和元搜索弓I擎(Meta Search Engine). 全文搜索引擎(Full Text Search Engine)全文搜索引擎是从各个网站提取信息,建立数据库,检索与用户查询条件 相匹配的记录后,按照一定的排列顺序返回结果,是名副其实的搜索引擎。全文 搜索弓I擎的自动信息搜集有两种:一种是定期搜索,即每隔一段时间,搜索引擎 主动派出爬虫程序,对一定IP地址范围的网站进行检索,一旦发现新的网站,
12、它 会自动提取网站的信息和网址参加数据库;另一种是提交网站搜索,即网站拥有 者主动向搜索引擎提交网址,搜索引擎在一定时间内(两夭到数月不等)定期向提 交的网站派出爬虫程序。全文搜索引擎中最具代表性的有国外著名的Google及国 内的百度搜索。二、目录索引SearchIndex/Directory)目录索引13是一种人工方式或半自动方式的搜索引擎,由编辑人员查看信息 后,人工生成信息摘要,并将信息置于事先确定的分类框架中.由于目录索引只 是一个按目录分类的网站链接列表,因此不能称为严格意义上的搜索引擎。由于 目录索引中参加了人的智能,所以导航质量高,信息更准确,但也正因为如此, 使得维护费用偏大
13、,信息更新不及时。目录索引中最具代表性的有yahoo、新浪,三、元搜索弓I擎(MetaSearch Engine)元搜索引擎4没有自己的数据,而是将用户的查询请求同时向多个搜索引擎递 交,将返回的结果处理后,作为自己的结果返回给用户。元搜索引擎返回结果的 信息量更大、更全,但是不能够充分利用所使用搜索引擎的功能, 多的筛选。1.2. 3开展历史搜索引擎技术伴随着互联网的开展引人注目,大约经历了三代的开展。第一代搜索引擎出现于1994年,是在传统检索学理论上开展起来的,用户只 要输入检索词,计算机根据检索词比对网页、网站等进行不同的加权处理,根据 权值对信息文献进行排序,权值越大计算机认为该条信
14、息与检索词相关性越高。 这类搜索引擎一般都索引少于1, 000,000个网页,极少重新搜集网页和更新索引。 而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。在实现技术上根本 沿用较为成熟的IRdnformation Retrieval).网络、数据库等技术,相当于利 用一些已有技术实现一个互联网上的应用。第二代搜索引擎大约出现在1996年,受文献引文索引的影响,人们通过对网 页被引用的次数、引用者的权威性计算,对网页进行链接分析排序,链接分析排 序技术一个最明显的好处是:在结合词频排序技术的情况下,兼顾到了排序的准 确性和权威性。此时的搜索引擎大多采用分布式方案来提髙数据规模、响应速度
15、 和用户数量,一般都保持一个大约50,000, 000网页的索引数据库,每天能够响应 10, 000,000次用户检索请求。1997年11月,当时最先进的几个搜索引擎号称能建 立从2,000, 000到100, 000, 000的网页索引-1998年至今为第三代,是搜索引擎空前繁荣的时期,这一时期的搜索引擎的 开展有如下几个特点:(1) 索引数据库的规模继续增大,一般的商业搜索引擎都保持在10亿个网页 以上。由于索引数据库的巨大规模,使得对应于搜索关键宇的返回结果数量非常 大,检索结果相关度评价成为研究的焦点。相关的研究分为两类:一类是对超链 接的分析;另一类是对用户反应信息的研究。(2) 开
16、始使用自动分类技术,搜索引擎己成为一个新的研究、开发领域。因为涉及到分布式处理、数据库、 信息检索、人工智能、计箅机网络、数据挖掘、数字图书馆、自然语言处理等多 领域的理论和技术,所以具有综合性和挑战性。又由于搜索引擎有大量的用户, 拥有很好的经济价值,所以引起了世界各国计算机科学界和信息产业界的高度关 注,目前的研究、开发十分活泼搜索引擎一般由搜集器、分析器、索引器、检索器和用户接口五局部组成, 如图1-1所示。www 分析器 原始f据库弓 用户接口- / f图1-1搜索引擎的体系结构搜集器15】的功能是在互联网中漫游、发现和搜集信息。它常常是一个计算机 程序,日夜不停地运行,尽可能多、尽可
17、能快地搜集各种类型的新信息。同时因 为互联网上的信息更新很快,需要定期更新已经搜集过的信息,以防止死链接和 无效链接。搜索器的实现常常使用分布式、并行计算技术,以提高信息发现和更 新的速度。搜索器搜集的信息类型多种多样,包括HTML、XML、pdf文件、doc文 档、多媒体信息等等。1. 3,2分析器分析器6对本地文档库进行分析以便用于索引,文档分析技术包括分词、过 滤和转换等。索引数据库一般“词能够表达完整的语义对象,所以通常选用词作为文本特征的元数 据。在分词时,大局部系统从全文中抽取词条,也有局部系统只从文档的某些部 分如标题等抽取词条。由于中文的基元是字而不是词,句子中各词语间没有 固
18、定的分隔符,汉语语义及结构上的复杂性和多边性给中文分词带来极大困难。汉语分词主要有两大类方法基于词典与规那么,或者基于统计前者应用词典 匹配,汉语词法或其他汉语语言知识进行分词,如最大匹配法Maximum Matching)、最小分词方法等,其性能依赖于词典的完备性、规那么的一致性。后 者基于字和词的统计信息,如相邻字间互信息,词频及相应的奉献信息等应用于 分词。分词后通常要使用禁用词表stop list)来去除出现频率很高的无意义词 条,如aru the、of、的。另外需要对词条进行单、复数转换,词缀去除,同义 词转换等工作,如将jumps、jumped, jumper都归结成jump进行索
19、引。索引器5分析器提取的信息中抽取出索引项,用于表示文档以及生成文档 库的索引表。索引表一般使用某种形式的倒排表(Inversion List),即由索引项 查找相应的文档。索引表也可能要记录索引项在文档中出现的位置,以便检索器 计算索引项之间的相邻或相近关系(Proximity).索引项有客观索引项和内容索引项两种。客观索引项与文档的语意内容无 关,如作者名、URL、更新时间、编码、长度、链接流行度(Link Popularity)等; 内容索引项是用来反映文档内容的,如关键词及其权重、短语、单字等。内容索 引项可以分为单索引项和多索引项(或称短语索引项)两种.单索引项对于英文来 讲是英语单
20、词,比拟容易提取,因为单词之间有天然的分隔符(空格);对于中文 等连续书写的语言,必须进行词语的切分。在搜索引擎中,一般要给单索引项陚 予一个权值,以表示该索引项对文档的区分度,同时用来计算查询结果的相关度。 使用的方法一般有统计法、信息论法和概率法。短语索引项的提取方法有统计法、 概率法和语言学法。索引器可以使用集中式索引算法或分布式索引算法。当数据量很大时,必须 实现即时索引(Instant Indexing),否那么跟不上信息量急剧增加的速度。索引算 法对索引器的性能(如大规模峰值査询时的响应速度)有很大的影响,一个搜索引 擎的有效性在很大程度上取决于索引的质量。检索器5】根据用户的查询
21、在索引库中找出文档,进行文档与查询的相关度评 价,对将要输出的结果进行排序,并实现某种用户相关性反应机制,检索器常用 的信息检索模型有集合理论模型、代数模型、概率模型和混合模型四种。1.3 5用户接口用户接口5】为用户提供可视化的查询输入和结果输出界面,提供用户相关性 反应机制。主要目的是方便用户使用搜索引擎,高效率、多方式地从捜索引擎中 得到有效、及时的信息。用户接口的设计和实现使用人机交互的理论和方法,以 充分适应人类的思维习惯。用户输入接口可以分为简单接口和复杂接口两种。简 单接口只提供用户输入查询串的文本框;复杂接口可以让用户对查询进行限制, 如逻辑运算(与、或、非、相近关系、出现位置
22、(如标题、内容、信息时间、 长度等。在输出界面中,搜索引擎将检索结果展现为一个线性的文档列表,其中 包含了文档的标题、摘要、URL等信息,用户需要逐个浏览以便找出所需的文档。论文组织本论文共分六章。1) 第1章绪论。本章介绍论文的选题背景和意义、国内外相关领域技术的 现状以及论文的组织结构。2) 第2章网络爬虫研究热点。本章主要介绍了网络爬虫的根本原理、工作 流程以及目前网络爬虫的研究热点:聚焦爬虫和主题爬虫,分别介绍了它们的分 类和体系结构。3) 第3章AjaxCrawler概要设计。本章主要介绍Web2. 0相关技术和对爬 虫的影响以及AjaxCrawler的整体架构、关键技术。4) 第4
23、章AjaxCrawler的实现。介绍网络爬虫的相关技术和AjaxOawler 的实现,包括JS解释器、DOM支持模块、页面生成模块等几个局部。5) 第5章测试和实验。介绍了AjaxCrawler的测试以及传统爬虫和 AjaxCrawler抓取结果的比照。6) 第6章总结与展望。总结了论文创新点,展望了AjaxCrawler值得继续 优化和实现的问题。第2章网络爬虫研究热点作为搜索引擎关键技术之一的网络爬虫被称为Web Crawler, *eb Wanderer或 Web Spider,能够沿Web页面中的超链接在万维网中自动漫游,并读取漫游的Web 页面的程序。网络爬虫的漫游是指根据HTML文
24、档中的超链接,利用 协议连续 地从不同的效劳器中获取Web页面的过程。网络爬虫是通过网页的链接地址来寻找网页。从网站的某一个页面(通常是 首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链 接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取 完为止。如果把整个互联网当成一个网站,理论上讲网络爬虫可以把互联网上所 有的网页都抓取下来。传统爬虫从一个或假设干初始网页的链接地址开始,获得初始网页上的地址, 在抓取网页的过程中,不断从当前页面上抽取新的链接地址放入队列,直到满足 一定的停止条件,如图2-1所示。开始初始链接地址获取网页将新的地址放入队列否C结束
25、图2-1传统爬虫的工作流程网页的抓取策略分为深度优先、广度优先和最正确优先三种,广度优先搜索策略是在抓取过程中先抓取起始网页中链接的所有网页,然后 再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。该算法的设 计和实现相对简单。目前为覆盖尽可能多的网页,一般使用广度优先搜索方法, 因为这个方法可以让网络爬虫并行处理,提高其抓取速度。对于图2-2,广度优 先的抓取顺序JiAB、C、D、E、F-H, G-I,深度优先是指网络爬虫会从起始页开始,一个链接一个链接抓取下去,处理 完这条线路之后再转入下一个起始页,继续抓取链接。这个方法的优点是网络爬 虫在设计时比拟容易,但是会导致爬虫的陷入问
26、题。对于图2-2,深度优先的抓 取顺序是AFG; E-H-I; B; C; D,2. 1.3. 3最正确优先搜索最正确优先搜索策略s】按照一定的网页分析算法,预测候选链接地址与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个地址进行抓取。 它只访问经过网页分析算法预测为?有用的网页。存在的一个问题是,在爬虫 抓取路径上的很多相关网页可能被忽略,因为最正确优先策略是一种局部最优搜索 算法,因此需要将最正确优先结合具体的应用进行改良,以跳出局部最优点。图2-2抓取策略随着网络的迅速开展,万维网成为大量信息的载体,如何有效地提取并利用 这些信息成为一个巨大的挑战。搜索引擎,例如传统的通
27、用搜索引擎AltaVista, Yahoo!等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指 南。但是,这些通用性搜索引擎也存在一定的局限性,如:(1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索 引擎所返回的结果包含大量用户不关心的网页。(2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎效劳器 资源与无限的网络数据资源之间的矛盾将进一步加深。万维网数据形式的丰富和网络技术的不断开展,图片、数据库,音频、 视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有 一定结构的数据无能为力,不能很好地发现和获取。(4)通用搜索引擎大多提
28、供基于关键字的检索,难以支持根据语义信息提出 的查询。为了解决上述问题,定向抓取相关网页资源的聚焦爬虫产生了。聚焦爬虫是 一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫不同,聚焦爬虫并不追求大的 覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查 询准备数据资源。聚焦爬虫能有效地利用网络带宽,减少网络拥塞。 相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题8-(1) 对抓取目标的描述或定义:(2) 对网页或数据的分析与过滤;(3) 对链接地址的搜索策略。抓取目标的描述和定义是决定网页分析算法与链接地址搜索
29、策略如何制订 的根底,而网页分析算法和候选链接地址排序算法是决定搜索引擎所提供的效劳 形式和鹏虫网页抓取行为的关键所在。一、基于分类器的聚焦爬虫文献9是具有代表性的聚焦爬虫的早期研究之一,目前大多数的聚焦抓取 都采用了类似的工作流程,其系统结构如图2-3所示。根据一个主题目录和用户 指定的初始点来描述抓取目标,并在用户浏览过程中,将用户标注的感兴趣网页 放入相应的主题目录,修改主题样本。系统的两个主要局部是网页分类器和网页 选择器。网页分类器负责学习抓取目标的特点,计算网页的关联度,并过滤网页。 选择器负责计算网页的重要程度,发现中心型网页,并由此动态决定网页的访问 顺序。Priority C
30、tt-olCrawler FrontierTaxonomyV Table yVjables J-r: Read yr- ExamplesDistillerJ3JU。 CIa5sifier(Filtermg)ClassifierCTraining)opic VModels 2-3基于分类器聚焦爬虫体系结构【9二、基于数据抽取器的聚焦爬虫Extractor如图2-4,聚焦爬虫从网络上发现所需要的资源网页,传递给数据抽取器进 行数据抽取工作。数据抽取可能是对Hidden Web之后的数据库进行探测查询,也 可能是通过wrapper或网页外观格式信息进行数据抽取。得到的原数据将由数据 分析器做分析和标
31、注,才能转化为符合系统数据库模式的结构化数据进行存储和WWWWebpage CrawlerFeedbaclData 、Analyzer J图2*4基于数据抽取器的聚焦爬虫体系结构三、基于用户学习的聚焦爬虫协作聚焦爬虫的体系结构关键在于对用户的浏览模式的学习模块。文献10 的爬虫体系结构如图2-5所示。系统通过记录用户在浏览到感兴趣的网页时,点 击?有用按钮的行为,记录相关网页,为用户建立浏览模型。之后,系统对经 过标注的网页进行LSI聚类,根据聚类结果构建概念图,表示不同类别之间的联 系。这样,系统就可以利用不同网页间的链接关系来学习用户的浏览行为。图2-5基于用户学习的聚焦爬虫体系结构2.
32、3主题爬虫目前的搜索引擎大多数是面向所有信息的,可称之为综合性搜索引擎。随着 信息多元化的增长,适用于所有用户的综合性搜索引擎已经不能满足特定用户更 深入地查询需求,他们对信息的需求往往是针对受限领域和面向特定主题,综合 性搜索引擎的召回率和查准率都比拟低。针对这种情况,需要一个分类细致精确、 数据全面深入、更新及时的面向主题的搜索引擎。主题相关度的分析是主题爬虫设计的关键,最简单的可以基于关键词进行分 析,更深入的可以上升到语义和概念层次。基于关键词的主题相关度分析的主要 思路:首先在领域专家的参与下,确定一组带有权重的能够代表受限领域的关键 词,用来表示确定的主题;然后对页面进行关键词提取
33、,釆用向量空间模型算法 计算网页的主题相关度,从而决定页面的取舍。基于关键词和基于概念的主题爬虫系统都是以普通爬虫为根底,对其进行功 能上的扩充,在对网页整个处理过程中增加主题确立模块、优化初始种子模块、 主题相关度分析模块和排序模块。如下图,主题爬虫的工作流程如下: 第一步,爬行模块取回网页;第二步,调用相关度分析模块,对网页进行相关度分析; 第三步,爬行模块根据分析的不同结果进行相应的处理; 第四步,爬行模块从数据库取出等待处理的URL继续工作,返回到第一步, 直到没有新的URL;第五步,对网页的重要程度进行排序。HTML文档 爬行模块初始种子模块們数据库相关度 分析模块 排序模块图2-6
34、系统结构111本章主要介绍了网络爬虫的原理、工作流程和研究热点:聚焦爬虫和主题爬 虫,分别介绍了它们的分类和体系结构。第3章AjaxCrawler概要设计 3.1 Web 的影响HTML语言是网络世界进行信息交换的最主要语言之一,HTML语言属于一种标 记语言,它将纯文本和格式化指令混合在一起反映格式化文本。 HTML语法由标记TAG和数据两局部组成(1) 标记TAG是之间的局部,由标记名和属性组成。比方, input是标记名,type、value是属性名,button、ok 是属性值,标记名和属性是大小写无关的。HTML元素按功能分为三类:用于表示HTML文档结构的元素,如list、tabl
35、e 用于表示HTML文档显示样式的元素,如font、color 用于提供HTML文档交互功能的元素,如form、script(2) 数据局部是HTML文挡中标记以外的局部,一般解析这些数据为文字。 个HTML文档通常包括如下三个局部- 一个包含HTML版本信息的行文档头局部,由元素HEAD标识 文档体局部,由元素BODY标识 下面是一个简单HTML文档: this is a sample Hello world 互联网上有不计其数的网页,制作这些网页的标准语言就是HTML语言,这些网页包含很多链接,有指向其他网站网页的,也有指向与自身同一效劳器网页的, 用户通过点击这些链接就可以从一个网页跳到
36、另一个网页,这些链接使用统一资 源定位符Universal Resource Locator, URL)跳到其他网页,URL是网页和其 他资源的地址。随着网络技术的开展,网站变得越来越复杂,网站开发从单纯使用静态HTML 到使用HTML和脚本语言,从而实现更多的功能。如今,使用脚本代码构建网页己 经比拟普遍,例如动态生成网页内容,通常都需要利用很多变量和复杂的脚本, 给网络爬虫抓取和分析此类网页带来很多困难。在脚本代码用于网页之前,所有的链接都是由HTML的标签标识,网络爬 虫只需要分析页面中的标签,就能比拟完整地抓取这个网站的网页。但是随 着脚本代码越来越多地用于网页的逻辑处理、页面呈现等等
37、,尤其是近年来,随 着的兴起,AJAX技术的流行,很多网站将脚本的应用发挥到及至,极大 地提高了用户体验。Web 的概念是2004年3月OReilly公司的Dale Dougherty与MediaLive公司 的Craig Cline在一个头脑风暴会议上提出的。OReilly公司副总裁Dale Doughety 在这次会议上指出,网络非但没有破灭,而且随着许多令人冲动的新程序和网站 让人惊讶的突然出现,网络比以往的作用更重要。Web 是互联网的一次理念和思想体系的升级换代,原来自上而下的、少 数资源控制者集中控制主导的互联网体系,现在转变为自下而上的、由用户集体 智慧和力量主导的互联网体系。W
38、eb 内在的动力来源是将互联网的主导权交 还个人,从而充分开掘了个人的积极性。广阔个人所奉献的影响和智慧以及个人 联系形成的社群影响替代了原来少数人的影响,从而极大地解放了个人的创作和 奉献的潜能,使互联网的创造力上升到了新的量级。Web 不单纯是技术或者解决方案,而是一套可执行的理念体系,实践着 网络社会化和个性化的理想。具体的说从模式上是单纯的读向写、共同建设的发 展。Web 是以Flickr、Tribes等网站为代表,以Blog、TAG、SNS、RSS、wiki 等社会软件的应用为核心,依据六度分隔、分形、XML、AJAX等新理论和技术实 现的互联网新一代模式,3. 1. 2 AJAX利
39、用Web幵发应用程序因其易于部署、节省本钱的特点而逐渐成为技术的主 流,浏览器将是未来唯一需要的客户端。J2EE Web技术己经从一个静态的内容提 供环境迅速开展为一个在Intranet和Internet上运行的动态业务应用程序的可 靠平台过去几年中在后端(后端机制,backend mechanics)投入了太多的时间, 而在Web用户界面对用户交互和响应灵敏方面却投入缺乏。用户在强大的业务逻 辑背后,还忍受着提交一响应一等待一刷新的同步运行机制,不管在页面呈 现上的变化多么小,都需要耐心地等待效劳器将整个页面重新发送给客户端。为了构建更为动态和响应更灵敏的Web应用程序,实现浏览器和效劳器的
40、异 步并行处理,减轻效劳器端负担,Jesse James Garrett提出了AJAXH3 (Asynchronous JavaScript and XML )这一新的概念,AJAX是一种创立交互式网 页应用的网页开发技术,由多种技术组合而成,包括13:基于XHTML和CSS标准的表示; 使用Document Object Model进行动态显示和交互; 使用XML Request对象与效劳器进行异步通信; 使用JavaScript绑定一切。与传统的Web开发不同,AJAX并不是以一种基于静态页面的方式来看待Web应 用的。从AJAX的角度看来,Web应用应由少量的页面组成,其中每个页面是一个
41、 更小型的AJAX应用,每个页面包括有一些使用JavaScript开发的AJAX组件。这些 组件使用XML lfequest对象以异步的方式与效劳器通信,从效劳器获取需要的 数据后使用DOM API来更新页面内容,与传统Web应用的比拟如图3-1所示,在传统的浏览器与效劳器的交互方式中,用户浏览Web资源时, 首先由客户端浏览器向Web效劳器发送 请求。Web效劳器对用户的请求进行处 理,并把处理结果以HTML页面的形式返回给客户端浏览器。当用户的 请求在 发送或Web效劳器在处理请求时,用户必须等待。另外用户还经常遇到仅仅是改 变页面的一小部内容,ITeb效劳器都要返回一个完整的ffeb页,
42、造成用户每次都要 浪费时间和带宽去重新读取整个页面。如图3-2所示,AJAX的工作原理相当于在用户和效劳器之间加了一个中间 层一一AJAX引擎,使用户操作与效劳器响应异步化并不是所有的用户请求 都提交给效劳器。一些数据验证和处理由AJAX来做而不必交给效劳器处理,只有 确定需要从效劳器读取新数据时再由AJAX引擎向效劳器提交请求。在使用AJAX引 擎后,用户从感觉上几乎所有的操作都会很快响应,并且没有页面重载(白屏)的等待?AJAX引擎实际上是一个比拟复杂的JavaScript应用程序,用来处理用户请求 然后根据需要动态读写效劳器和更改DOM内容。以前为了使网页能无缝化重构, 也就是在页面已经
43、下载完毕后改变页面内容,开发人员_直通过JavaScript和 DOM来实现。但是要使网页真正动态起来,不仅需要内部的互动,还需要从外部 获取数据,在XML Reciuest对象出现以前是让用户来输入数据并通过DOM来改 变网页内容的,但现在XML Request对象可以在不重新载入页面的情况下读写 效劳器上的数据,使用户的输入到达最少。AJAX引擎允许用户与应用软件之间的交互过程异步进行,独立于用户与网络 效劳器间的交流。所以就算当请求和响应在引擎和效劳器之间被来回传送,用户 还是能与应用程序交互。从而可以用JavaScript调用AJAX引擎来代替产生一个 的用户动作,同时引擎本身能够立即
44、处理不需要请求效劳器的动作,就像桌 面应用程序处理一样,例如在内存中编辑数据,验证数据等。dassk: web applicatk (syrKJinKHs)client- .:Ajax web applktion mod (asywrftronoi)Mv HuMlri偏server 德同步交互上和异步交互下的比拟【13browser client server-side systemsclassic web application modelseierside systems Ajaxweb application model 图3-2传统Web应用和基于AJAX的Web应用的比拟3.1. 2
45、.2 XML RequestAJAX的核心是JavaScript对象XML Request,简称为XHR,是AJAX引擎解 决无需刷新整个页面就可以从效劳器获取数据的关键所在,该对象在Internet Explorer 5中首次引入,是一种支持异步请求的技术。简而言之,XHR为运行于 浏览器中的JavaScript脚本提供了一种在页面之内与效劳器通信的手段。员面内 的JavaScript可以在不刷新页面的情况下从效劳器获取数据,或者向效劳器提交 数据。XHR的出现为Web开发提供了一种全新的可能性,甚至整个改变了人们对于 Web应用由什么来组成的看法,它可以使我们以一种全新的方式来做ffeb开
46、发,为 用户提供更好的交互体验。在微软IE平台下XHR是XML 组件一个对象,它通过允许幵发人员在Web页 面内部使用XML Active)(组件扩展自身的功能,开发人员可以不用从当前的 Web页面导航而直接传输数据到效劳器上或者从效劳器取数据。这个功能是很重 要的,因为它帮助减少了无状态连接的痛苦,还可以排除下载冗余web数据的需要。在其他Web浏览器平台下,例如Mozilla, Konqueror和Opera,也创立了自己 的m代理类一一XML Request类。对于大多数情况,XML Request对象和 XML 组件很相似,方法和属性也类似,如下表所示:表 3 XML Request 对象方法方法描述Abort停止当前请求getAllResponseHeaders返回完整的heads,字符串类型getResponseHeader返回单个header标签,字符串类型Open设置请求目标URL,方法和其他参数Send发送请求setRequestHeader设置header并和请求一起发送表 3-2 XML Request 对象属性属性描述onreadystatechange状态改变的事件触发器readyState对象状