在线产品即时比价系统设计规划方案doc.docx
《在线产品即时比价系统设计规划方案doc.docx》由会员分享,可在线阅读,更多相关《在线产品即时比价系统设计规划方案doc.docx(72页珍藏版)》请在冰豆网上搜索。
在线产品即时比价系统设计规划方案doc
在线产品即时比价系统设计方案
1.1课题研究的意义
1.1.1课题的现实意义
当用户需要购买一件商品时他需要面临一个选择,即在哪个购买自己想要的商品,在这个时候用户会在各大电商中逐一搜索自己想要购买的商品,哪个提供的商品性价比最高,用户就会选择这个进行交易。
用户在各大搜索和比较商品无疑是一件费时费力的事情,频繁得在各大电商之间切换,不能很直观的看到这些商品之间的差异。
此外,用户多会在一些较大的电商比如淘宝、京东等搜索自己想要购买的商品,却忽略了其它规模较小的电商,用户在不知不觉间就丢失了一些重要的信息。
为了应对以上问题,开发一个比价系统是很有必要的。
当用户需要购买一件商品时,只需要在比价搜索自己想要的商品,比价会将各大电商的商品信息在同一个页面呈现给用户,用户可以直观的看到各大电商的商品价格差异,同时也能获取其它不知名购物的商品信息,有助于用户完成交易。
比价系统对于用户和卖家都是有利的,非常有价值去实现这么一个具有比价功能的系统。
1.1.2课题的学习意义
Web系统开发在当前是一个非常热门的领域,越来越多的程序员都在涌向Web开发领域。
因此,熟悉一些Web开发中常用的技术是非常有意义的事情。
Java、PHP和.net是当今Web开发中最常用的技术。
本系统将采用Java来开发,同时了解Java开发Web系统的流程,熟悉Java开发的一些常用技术,对自己以后的发展是很有帮助的,因此开发一个这样的基于Web的网络购物比价系统能够提高自己的竞争力,也可以为将来从事此行业铺好道路。
1.2国外概况
1.2.1比价系统国外发展概况
互联网技术的出现和发展极大方便了人们对信息的获取,国外互联网出现的较早,
对价格比较系统的研究和开发也比较早。
目前国外的比较购物行业已经处于较为成熟
的阶段。
比较购物已经成为国外网购用户必须借助的网购工具,也成为B2C商家不可
或缺的合作伙伴。
国比较购物起步的比较晚,一直到2004年,随着互联网的普及,比较购物才开始
兴起,但是发展到现在,国也已经出现了不少的比较购物和应用。
1.2.2HTML解析国外发展概况
比价系统的核心在于HTML文本的解析,当前用以HTML解析的工具非常多,这些
工具由各种语言开发,很多工具都有多语言版本。
国外可用以HTML解析的库相当多,
主要如下:
HTMLParser。
该库是一个对HTML进行分析的快速实时的解析器,最新的发行版本是2.0。
Jsoup。
Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本容。
它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方
法来取出和操作数据。
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;使用DOM或CSS选择器来查找、取出数据;可操作HTML元素、属性、文本;jsoup是基于MIT协议发布的,可放心使用于商业项目。
NekoHTML。
NekoHTML是一个Java语言的HTML扫描器和标签补全器(tag
balancer),使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。
这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。
NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及
不匹配的嵌元素标签。
NekoHTML的开发使用了XercesNativeInterface(XNI),后者是Xerces2的实现基础。
JTidy。
JTidy是HTMLTidy用Java语言实现的版本,提供了一个HTML的语法
检查器和很好的打印功能。
JTidy可以用来清除格式不好和不对的HTML。
此外,JTidy提供了对整个HTML的DOM分析器。
程序员可以将JTidy当作一个处理HTML文件的DOM解析器来使用。
HTMLCleaner。
HTMLCleaner是一个开源的Java语言的HTML文档解析器。
HTMLCleaner能够重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的HTML文档。
默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则。
然而,用户可以提供自定义tag和规则组来进行过滤和匹配。
MozillaParser。
MozillaParser是一个Java的HTML解析类库,基于mozilla
的HTML解析器,提供了Java类到Mozilla类的一个桥接,输入一个HTML文本,输出一个Java的Document对象。
Jerry。
Jerry是Jodd工具包中的一个HTML解析工具。
它有点像是用Java实现
的jQuery。
Jerry是一个高效简洁的Java库,用来简化HTML的解析,遍历和操作。
Jerry的API在设计的时候完全向jQuery靠拢,几乎和jQuery一样,所以有时候你
可以直接copyjQuery的代码来用。
当然,也有些代码做不到一样,毕竟执行的环境
差了很多。
Jerry是一个静态的HTML解析工具,所以jQuery的动态功能Jerry是没
有的,例如Ajax,动画等等。
Scrender。
Scrender是一个用来生成网页缩略图的Java类库,基于SWT开发。
它实质上是调用本地浏览器引擎对要进行截图的进行渲染,然后保存该网页的缩略图。
在本系统中采用Jsoup来进行HTML文本解析,灵活、高效地使用Jsoup也是整个系统的关键所在。
1.3课题主要容
1.3.1课题任务
本课题将实现一个简单的网络购物比价系统,系统需达到如下要求:
本系统主要是对在淘宝网、京东网和亚马逊网三大购物中的相同产品的信息进行
抽取。
本系统的重点是实现使用HTML页面爬取功能获取产品数据,对获取到的网页数
据进行抽取分析,最后以Web页面形式呈现出来。
本系统的难点是使用HTML页面爬取功能获取产品数据,对获取到的网页数据进行抽取分析,结构化抽取的数据和信息。
1.3.2毕设主要容
毕设根据课题任务实现了一个实时爬取淘宝网、京东网和亚马逊网的商品信息的比价系统。
系统具有如下特点:
(1)系统能够分别从淘宝、京东和亚马逊三个爬取相关商品信息,商品的信息包括商品、商品图片、商品价格、商品名(也指商品简介)。
系统可以在同一个页面中同时显示三大电商的相关商品信息,用户可以从页面中看到不同电商的商品价格差异;
(2)商品的关键字匹配是在电商完成,电商的搜索结果是比较准确的,系统将搜索结果直接拿来使用,保证了商品关键字的较高匹配度;
(3)系统设计为实时爬取。
系统的这个特性保证了系统爬取到的信息的准确度,能够很好应对两大电商的价格浮动和商品的新旧更替;
(4)系统的默认排序为三个电商商品的交替排序,并且这些排序是经过相似度算法处理的;
(5)系统可以选择不同的电商(这里只做了三个)的商品;
(6)系统没有较明显的大BUG,不影响用户的使用体验;
(7)系统主要分为3个层级:
业务逻辑层、数据爬取层、视图层。
三个层级协调工作,共同实现整个系统的功能。
2系统设计方案
2.1两种系统设计方案
比价系统要做的事情主要是:
爬取多个电商的商品信息,将这些商品的信息同时呈现给用户。
然而商品数目繁多,系统需要在众多的商品中搜索出符合用户要求的商品。
关于
在何时何地进行商品的搜索产生了2种不同的方案-数据库法和即时爬取法。
数据库
法需要经常更新数据库数据,而即时爬取法则更适合本系统的设计目的。
在
2.1.1和
2.1.2小节将会详述2种方案的细节,以及两种方案的优缺点。
2.1.1方案1数据库法
在该方案中,系统已经事先爬取了各大电商几乎所有的商品信息,然后将每种商品的主要信息(商品价格、商品主页、商品图片、商品简介)存储在服务器的数据库
当中,并将每种商品在数据库的索引和其关键字信息通过检索/索引工具(比如:
Lucene)在磁盘建立索引文件。
当用户在比价系统的搜索栏中输入关键字并点击搜索按钮时,系统获取了这一关键字,然后通过检索/索引工具的检索功能获取一系列符合
要求的商品的索引,然后将这些商品的信息从数据库取出,通过jsp技术动态生成网页提交给用户的客户端浏览器。
方案1的系统流程见图2.1。
(1)方案优点
爬取模块和响应客户端的模块相对较独立,爬取模块可在空闲时爬取商品信息。
商品检索在服务器端执行,响应速度较快。
(2)方案缺点
每个电商的商品数量都是非常大的,再加上多个电商,总的商品量就相当大,然而电商的数据库不可能开放给外界直接进行访问,系统需要通过电商的商品页面来获取商品信息。
假设每个商品都对应一个页面,那么就是海量的数据要进行处理。
每爬取一次都要耗费大量的资源,带来一定的开销,然而这些商品的数据并不是一成不变的,需要经常更新来确保数据的准确性。
业务逻辑
②数据持久化
层
⑤
①
③
京东
客户
④
①
商城
端浏
数
⑥
③
②
⑦
览器
数据库
据
爬
①
亚马逊
视图层
取
商城
②
模
块
图2.1
方案1数据库法
2.1.2方案2即时爬取法
方案1的实现类似于搜索引擎,方案
2则与方案1大不相同。
方案
2中商品的信
息并不存储在系统服务器端的数据库中。
当用户提交关键字时,服务器端将关键字提
交给各大电商,然后将各大电商的搜索结果页中爬取商品信息,将爬取到的信息经过
处理再动态生成网页提交给用户。
方案2
的系统流程见图2.2.
(1)
方案优点
较灵活,可良好应对商品信息经常变更的情况。
在服务器不需要数据库来存储数
据,消除了数据的维护成本。
(2)
方案缺点
用户在客户端每提交一次关键字服务器就要在各大电商再提交一次关键字,然后实时爬取商品信息再反馈给用户的客户端浏览器,需要花费时间等待系统把产品页面数据下载下来,而且每次面向用户服务都要对各大电商商品页面信息页面进行解析,耗时耗资源,特别是在数据源很多的情况下。
业
京
东
务
③
商
逻
②
城
①
辑
数
层
④
据
客户
爬
端浏
取
层
⑥
视
⑤
③
览器
图
层
亚
④
马
逊
商
城
比价系统
图2.2
方案2即时爬取法
2.2方案选择
最终实现方案:
方案2即时爬取法。
在方案1(见图2.1)当中,一次性抓取所有电商的所有信息要耗费大量的时间,而且在此期间对于大量网页的解析需要进行大量的运算,在此抓取周期还可能发生各种
不可预知的因素,而且整个抓取模块还受限于PC机的性能和网络环境等因素,综合以
上因素方案1并不适合作为毕业设计的最终方案。
而方案2较容易实现,虽然用户每次访问都要做较大量的运算,并行服务性能定然不强,但并不用事先抓取海量的商品
信息,相对于方案
1较容易实现。
综合以上分析的情况,选定方案
2作为系统的最终
实现方案。
2.3开发技术与开发环境
2.3.1JSP技术
Web领域开发技术众多,像.NET、JSP、PHP等。
本系统主要使用JSP技术来实现。
JSP是由SUN公司倡导、其它公司参与一起建立的一种动态技术标准。
在传统的网页
HTML文件中加入JAVA程序片段和JSP标签,就构成了JSP网页。
JAVA程序片段可以
操作数据库、重新定向网页等,实现建立动态所需的功能,所有程序操作都在服务器端执行,并将动态建立的HTML网页发送给客户端浏览器。
而浏览器与开发技术无关,
浏览器只负责解析渲染HTML页面。
JSP技术优势。
由于JAVA跨平台的特性,可以一次编写处处运行。
代码在跨平台
时不用做大量的修改。
JAVA具有强大的可伸缩性,由多台服务器进行集群和负载均衡
再到多态Application进行事务处理,消息处理,一台服务器到无数台服务器,JAVA
显示了一个巨大的生命力。
JAVA还有功能强大的和多样化的开发工具支持。
很多开发工具免费提供给开发者和学习者。
此外JAVA还有很多服务器端组件的支持
JSP技术劣势。
JAVA的跨平台特性源于其特殊的运行方式。
JAVA编译成字节码后要在JVM中运行。
这样大大降低了执行效率。
同时JAVA庞大繁多的框架与组件支持也
加大了其系统的复杂性以及学习者的压力。
2.3.2HTML解析技术Jsoup介绍
系统使用HTML解析库Jsoup来对网页进行解析。
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本容。
它提供了一套非常省力的API,可通过
DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
(1)从一个URL,文件或字符串中解析HTML;
(2)使用DOM或CSS选择器来查找、取出数据;
(3)可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
jsoup的主要类层次结构如下图所示:
图2.3Jsoup类层次结构图
2.3.3系统开发环境
JAVA是一个跨平台的语言,相应的JSP技术也可以在多平台下做开发。
本系统在
Windows764bit下搭建开发与运行环境。
(1)JDK1.6
JDK(JavaDevelopmentKit
)是
SunMicrosystems
针对
Java开发人员的产品。
JDK是整个Java的核心,包括了
Java运行环境、
Java
工具和
Java
基础类库。
(2)IntellijIDEA13
IDEA全称是Intellij
IDEA,是java
语言开发的集成环境,
IntelliJ
在业界被公
认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超
常的。
IDEA是JetBrains公司的产品,这家公司总部位于捷克国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
(3)Tomcat
Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
由于有了Sun的参与和支持,最新的Servlet和JSP规总是能在Tomcat中得到体现,Tomcat
5支持最新的Servlet2.4和JSP2.0规。
因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较
流行的Web应用服务器。
目前最新版本是8.0,而本系统采用的是版本Tomcat6.0。
3系统总体设计
3.1系统总体架构
系统采用JAVAEE技术开发。
系统主要分为3个层次:
业务逻辑模层、数据爬取层块、视图层。
该系统虽不是严格的MVC模式,却与MVC模式具有很大的相似性。
业务逻辑层。
该层负责将浏览器提交的参数进行简单的处理,通过相关逻辑功能,分别生成三大电商的URL,将URL作为参数提交给数据爬取层。
该层相当于MVC里面
的C。
数据爬取层。
数据爬取层以业务逻辑层提交的URL作为参数,对该URL对应的商品页面进行解析,获取页面的商品列表,针对商品列表中的每一件商品逐个解析,最
后把爬取到的商品数据封装在对象数组中,返回给业务逻辑层。
该层相当于MVC里面
的M。
视图层。
视图层是直接面向用户的一个层,该层包含了一个静态的HTML页面和一个动态的JSP页面。
静态的HTML页面是系统的主页,主要负责向系统提交用户的搜索关键字。
动态页面主要用来显示搜索的结果,同时也提供同静态HTML页面相同的功能。
系统总体架构图如图3.1所示。
发送搜索关键字
①
与分页信息请求
视
图
层
④返回处理过的数据
业
务
逻
辑
层
②发送url请求
③返回爬取到的数据
数
据
爬
取
层
图3.1系统总体架构图
3.2每层简要设计
接口是软件开发领域的一个重要的概念。
接口可以用来定义软件体系中不同层次
之间的通信规则。
在软件开发的过程中,开发者将系统分为多个层次,每个层次实现特定的功能,并为各个层次之间的通信建立接口标准,这样只要每个层次的满足了接口标准,在某一层需要改动的时候其它层不需要进行改变。
接口屏蔽了每一层的实现细节,同时保证了程序模块的重用性。
本系统分为三个层次:
业务逻辑层、数据爬取层、视图层。
业务逻辑层根据用户
的请求生成三大电商的URL,将URL提交给数据爬取层;同时业务逻辑层还将数据爬
取层返回的商品数据进行简单的处理,将其返回给视图层。
数据爬取层根据业务逻辑
层提交的URL爬取该页面的商品数据,将数据封装在对象数组中并返回给业务逻辑层。
视图层根据业务逻辑层返回的商品数据,动态生成HTML页面,将其提交给用户端的浏
览器。
业务逻辑层。
在该层创建时,其构造方法需要以request对象作为参数,该层可以根据request对象获取用户的请求。
在该层消亡时,该层需要返回商品数据给调用层,因此该层需要有一个方法用来获取商品信息并将其返回。
可以对该层进行如下框
架设计:
(1)类:
GetItemFromWeb,该类为该层的功能实现类。
(2)
方法:
GetItemFromWeb(HttpServletRequestrequest)
,该方法为构造方
法,创建对象时以request对象作为参数,该类可以通过request对象来获取
用户的请求信息。
(3)
方法:
publicListgetItemInfoList
(),该方法用以获取通过请
求获得的商品项信息列表结果集。
数据爬取层。
该层以页面URL作为参数获取该页面的商品信息。
在该层创建时,该层需要获取页面的URL,其构造方法需要以URL作为参数。
在该层消亡时,该层需要将爬取到的商品数据返回给调用层。
可以对该层进行如下框架设计:
(1)接口ItemInfoListInterface,该接口用于规获取商品项信息列表的类。
(2)方法publicListgetItemInfoList(),该方法爬取URL对应的
页面的商品信息,并将其作为返回值返回。
视图层。
该层可以用两个页面实现。
使用静态的HTML网页做系统的主页,该页面
的搜索框模仿一淘网的主页搜索框样式。
动态的页面使用的是JSP技术实现,该页面
负责显示商品的信息,该页面模仿了京东加一淘的搜索结果页的布局。
系统的数据流向图见图3.2。
浏
视
②request对象
业
览
①请求
图
务
器
层
逻
⑧HTML文本
辑
⑦商品数据
层
③URL
⑥商品数据
数
据
爬
取
层
④URL
⑤HTML文
电
商
网
站
图3.2系统数据流向图
4系统详细设计与实现
4.1系统功能简介
本系统只对淘宝网、京东网和亚马逊网3个购物的商品信息进行爬取。
系统可以根据用户提交的关键字在淘宝网、京东网和亚马逊网抓取相关商品信息,并将抓取到的信息通过JSP技术动态生成网页提交给浏览器。
用户可以在搜索结果页中看到来自三大电商的商品,可以直观地察觉到两大商城的商品价格差异,并不用分别从两大电商的搜索商品,这样节省了用户的时间和精力。
在上文中介绍到系统主要由三层构成,下文将详细介绍这三个功能层的设计与实现。
4.2数据爬取层设计与实现
数据爬取层的功能:
以页面的URL作为参数获取该页面的商品信息,并将商品信
息封装在对象数组中。
本小节将着重于介绍系统如何从页面的URL获取每件商品的各项基本信息。
4.2.1爬取商品列表
(1)京东商品列表爬取算法的设计与实现
京东搜索得到商品的搜索结果页面见图4.1。
在图4.1中,红色方框中的商品才是
系统需要爬取的商品。
数据爬取层需要将搜索到的结果从大量的商品中分离出来,得
到一个列表,然后再对列表中的商品逐一解析。
本小节将详细介绍系统如何获取这个
列表。
图4.1京东商品搜索结果页面
在搜索果中,京的的和非的搜索果面构是不同的,和非商品在搜索果面中的HTML代比如下:
book"bookid=”⋯”>
”⋯”>
商品1
非商品1
book"bookid=”⋯”>
”⋯”>
商品2
非商品2
book"