1 选题的目的和意义
互联网时代,电子支付的兴起,使得网购越来越简单。但是随着信息大爆炸,我们面临便是如何在互联网上的海量数据中,快速准确的找到我们所需要的商品这一重要的问题。
网络爬虫技术是根据既定的抓取目标,有选择的访问互联网上的网页与相关的链接,获取所需要的网络信息,对其进行相应的处理与保存,建立信息索引,这样大幅度提高了获取信息的效率和质量。
然而,网络爬虫仍然面临着很大的问题,比如网页链接之间复杂的关系,需要进行高密度的计算,以及如何存储在爬取信息的过程中产生的海量数据,存储这些信息需要大量的存储容量。
云计算平台的出现,解决了这些问题。云计算平台也称为云平台,是指基于硬件资源和软件资源的服务,提供计算、网络和存储能力。云平台通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。
本次所研究和实现的基于云平台的网络爬虫,是针对现有的网络爬虫对信息爬取效率的不足,以及结合相关云计算技术而设计的。本文通过虚拟化技术对数据中心的IT基础设施资源(服务器、存储、网络设备、应用等)进行池化,并对其进行有效的管理、分配和运用,提高了数据计算的效率,降低了数据存储的成本,方便用户更简单快捷的找到自己所需要的商品。基于此,提出了“网络爬虫在云平台上的应用与实现”这一设计题目。
2 国内外研究现状
作为搜索引擎技术核心元素之一,自1993年初 Matthew Gray’s Wandered 在麻省理工学院开发出有史记载的第一个网络爬虫以来,爬虫技术历经20多年的发展,技术已日趋多样。为满足不同用户多种多样的需求,创建开发了类型众多的爬虫系统。按照实现技术和其系统构成,爬虫系统主要可以分为以下几种:
通用网络爬虫(General Purpose Web Crawler)也可称之为全站爬虫(Scalable Web Crawler),它通过一系列预设的初始链接开始,获取页面上所有链接,根据预设规则,提取链接,进入待爬取队列,进而不断访问网页下载网页或取链接。然后通过HTML解析技术,获取页面数据,提取所需信息并保存,与此同时将新获取的链接放入待爬取队列,直到达到系统预设指定条件为止。
增量网络爬虫(Incremental Web Crawler)是一种根据不同同一网站上不同页面更新的频率的不同来对应不同的策略的爬取策略,是一种对已经爬取过的页面在数据存储中采取增量式的更新的策略,也就是说这种爬虫策略只会爬取当前新出现页面的数据和页面产生更新的数据。增量更新的策略相对于优先策略来说其不会出现大量重复爬取页面的情况,避免不能充分利用硬件或网络等资源,最终导致整个系统使用效率低下的情况的发生。
云计算先行者Google的云计算平台,针对Google的应用程序特点提出Map/Reduce编程模式,分布式的锁机制以及大规模分布式数据库,实现了大规模的分布式计算和应用服务程序。亚马逊研发了弹性计算云EC2(Elastic Computing Cloud)和简单存储服务S3(Simple Storage Service)为企业提供计算和存储服务。EC2将弹性计算建立在公司内部的大规模集群计算的平台之上,用户可以通过弹性计算云的网络界面去操作在云计算平台上运行的各个示例,付费方式由用户的使用状况决定。IBM在2007 年11月推出了蓝云(Blue Cloud)计算平台,为客户带来即买即用的IBM云计算平台,它包括一系列的自动化、自我管理和自我修复的虚拟化云计算软件,使来自全球的应用可以访问分布式的大型服务器资源池,使得数据中心在类似于互联网的环境下运行计算。
国内云计算平台也相继推出,盛大云和阿里云都是以Amazon云计算平台为师,在做符合中国用户实际需求的云计算平台,但是与Amazon还有很大的差距。目前,国外的IaaS平台更加成熟,云计算已经步入正轨,而国内的云计算发展还处在一个逐步完善、走向商业化的成长阶段。OpenStack是用来构建私有云和公共IaaS云的开源架构,有着易于开发和管理等诸多优点。目前已有数百家公司和近万名开发者参与到OpenStack的开发当中。这里面包括英特尔、惠普等硬件厂商、及红帽等开源厂商。新浪在云计算服务采用的是OpenStack开源云计算技术,对OpenStack平台之中相对较为弱势的网络功能组件Quantum以及负载均衡功能组件等均做了再次开发,大大减少了OpenStack在这方面的不足。华为云是华为公有云品牌,致力于提供专业的公有云服务,提供弹性云服务器、对象存储服务、桌面云和云托管等云计算服务。
3 选题研究(设计)内容
设计一款基于云平台的网络爬虫系统,主要内容是通过云计算平台的资源管理模块实现对网络爬虫的管理操作,利用云平台创建多台虚拟机,结合虚拟化技术,使得多个网络爬虫同时执行商品信息爬取任务,每个任务相互独立,互不影响。
1.研究网络爬虫的设计,使用Python语言编辑。主要针对商品信息的爬取,对网页上的信息进行定向抓取,抓取后进行数据分析,将符合用户需求的数据执行存储操作。
2.研究Redis数据库,构建中心数据库,来存储网络爬虫爬取的商品信息数据,便于用户管理存储的商品信息。
云计算平台将管理众多的基础设施,需要构建一个稳定的数据库,存放数据中心的基础设施数据,提供底层的数据库支持,需要研究数据库表的关联设计,使其支撑云计算资源管理平台稳定的运行。
3.研究如何将资源池化,实现计算资源的灵活配置,存储资源的灵活管理。
传统的数据中心中资源庞大而复杂,管理起来十分困难,如何打破传统,采用云计算平台来实现资源的灵活管理和配置。研究构建资源池,将服务器,存储,网络,软件等资源通过虚拟化技术形成一个巨大的资源池,并通过分布式算法进行资源分配,将大量的计算资源分配给网络爬虫,提高爬取商品信息的效率。
4.研究如何实现用户访问的云计算平台。
用户通过前台管理界面,访问云平台的计算资源,存储资源,进行网络爬虫的编辑、爬取、删除操作。云计算平台的设计语言将主要会采用面向对象的JAVA语言,在Eclipse上开发完成,Redis数据库安装在不同的虚拟机上,存储爬取的商品信息。
4 研究(设计)方法及技术路线
该平台是基于B/S结构和MVC的系统流程设计模式,实现虚拟化资源池通过计算资源,存储资源的管理,用户在前台管理界面可进行爬虫爬取商品信息操作,并建立云存储数据库,存储爬取的商品信息。
MVC(Model-View-Controller)设计模式被广泛应用于企业级WEB 应用的开发中。MVC 设计模式强制我们将应用分解成三个部分:模型(Model)负责业务数据的存储及管理,视图(View)负责呈现数据,并为用户提供与系统交互的界面接口,而控制器(Controller)则负责将用户动作转换成相应的业务数据集合传递给模型,或者将业务数据转换成相应的方式传递给视图。
基于云平台的资源调用通过高频的终端处理器和高速的网络化传输对资源按需分配,并且在运行过程中达到数据的重构与监控的目的。网络爬虫设计满足以下两个条件:定向爬取商品信息和多个爬取任务互不影响。这不但可以云平台的计算资源浪费,还极大的提高了效率。
5 预期成果形式
1.软件:网络爬虫技术在云平台上的应用系统
2.毕业设计论文
6 参考文献
[1] 邓自立.云计算中的网络拓扑设计和Hadoop平台研究[D].合肥:中国科学技术大学,2009.
|