首页 > Web开发 > 详细

Java网页数据采集器[续篇-远程操作]【转载】

时间:2014-03-02 02:34:23      阅读:764      评论:0      收藏:0      [点我收藏+]

本期概述

上期我们学习了html页面采集后的数据查询, 但这仅仅是在本地查询数据库,如果我们想通过远程操作来进行数据的采集,存储和查询,那又该怎么做呢?

今天我们一起来学习下:如何通过本地客户端远程访问服务端进行数据的采集,存储和查询.

数据采集页面 2011-2012赛季英超球队战绩

 

学习简单远程访问(RMI实例)

首先我们学习下简单的客户端远程访问服务端的例子. 

这里用到了 Java RMI (Remote Method Invocation)

Java RMI是一种机制, 是能够让一个 java虚拟机 调用 另一个java 虚拟机上对象的方法, 从而实现远程访问.

但是通过客户端实现该远程访问,必须绑定一个远程接口对象(意味着客户端可以访问到的服务端上的方法必须全部包含在这个接口里).

 

好了,我们来写下例子代码.

定义远程接口

首先,我们需要写个远程接口HelloInterface 该接口继承了远程对象Remote.

接口HelloInterface里面有个sayHello的方法,用于客户端连接后 打招呼.

由于sayHello方法继承了远程Remote对象, 所以需要抛一个 RemoteException 远程异常.

 

实现接口(实现接口在服务端)

接下来,我们实现下 该接口里的方法, 实现接口的方法在服务端.

这里的HelloInterfaceImpl类 实现了接口HelloInterface里的方法.

注意:这里HelloInterfaceImpl 同样继承了 UnicastRemoteObject 远程对象,这个必须写,虽然不写 代码智能提示不会提示有错,但服务端启动后会莫名其妙报错.

由于 UnicastRemoteObject 远程对象 需要抛出一个RemoteException 异常, 所以这里用了一个构造方法 HelloInterfaceImpl() 来抛这个异常.

 

编写服务端

接下来,我们来写 服务端,由于RMI 实现远程访问的机制是指:客户端通过在RMI注册表上寻找远程接口对象的地址(服务端地址) 达到实现远程访问的目的,

所以,我们需要在 服务端 创建一个远程对象的注册表,用于绑定和注册 服务端地址 和 远程接口对象,便于后期客户端能够成功找到服务端 (详细请看代码注释).

 

编写客户端

服务端写完了,我们来写下访问服务端需要的客户端.

客户端上同样需要定义一个 远程访问的地址 - 即服务端地址,

然后,通过在RMI注册表上寻找 该地址;  如果找到 则建立连接.

 

运行程序

首先,启动服务端,这里用的是 导出的服务端可运行jar文件.

bubuko.com,布布扣

 

然后,启动客户端来访问,服务端反馈一条访问成功信息:你好! SoFlash 欢迎访问服务端!

bubuko.com,布布扣

 

同时服务端显示:客户端用户SoFlash 正在访问本服务端

bubuko.com,布布扣

 

例子介绍完了,你是否明白了呢?  :p

附上例子 源代码 下载   Remote_Hello.zip  

jar文件  客户端 Hello_Client_jar.zip  服务端 Hello_Server_jar.zip

 

远程数据采集实现

定义远程接口

例子学完,那么让我们来 一起实现下 远程访问服务端 实现 足球网站的数据采集.

首先,我们写个 远程接口DataQueryInterface,它继承了远程对象Remote 里面包含了一些空方法,在服务端的DataQueryImpl类里面实现.

 

编写服务端(服务端包含了接口的实现)

接口完成, 我们来写下服务端代码.

Server类是包含了一个主函数 并且 绑定了远程接口对象(详细介绍 请看代码注释).

 DataCollectionAndStorage 类 以及里面的dataCollectAndStore() 方法 用于收集和存储数据.

 

实现接口(在服务端)

DataQueryImpl 类 用于实现接口DataQueryInterface 以及里面的所有方法 (具体请看代码及注释).

 DataStructure类 简单的数据结构 用于页面采集到的数据 临时性的存储.

 GroupMethod类 以及 里面的regularGroup()方法 用于匹配 并抓取 html 页面上需要的数据.

 

MySql类 用于实施 MySql数据库操作 里面包含了2个方法

  • datatoMySql() 方法 用于向数据库里插入数据 
  • queryMySql() 方法 用于查询数据

 

编写客户端

客户端 Client 类包含了一个客户端主函数,用于连接并访问服务端.

通过在RMI注册表上需找 服务端的地址 来获取对服务端的连接和访问 (详细请看 代码注释).

 

运行数据采集器

代码写好了, 我们来运行看看.

启动服务端

bubuko.com,布布扣


启动客户端来连接服务端

bubuko.com,布布扣

 

输入1 清空数据 服务端方 显示 "数据库清空成功!"

bubuko.com,布布扣

同时客户端显示 "服务端上数据清空完毕!"

bubuko.com,布布扣


输入2 操作服务端插入数据

我们看到 大量的数据被成功插入到服务端上.

bubuko.com,布布扣

 

客户端也最终 显示 "服务端上数据收集成功!".

bubuko.com,布布扣

 

输入3  在客户端上查看服务端上收集到的所有球队名称.

bubuko.com,布布扣

 

输入4选择 按球队查询比赛结果,再输入球队名称 查看到该球队的比赛记录. 这里查看的球队是 NewCastle

bubuko.com,布布扣

 

输入5 选择按日期查看比赛结果,这里查看的日期是 03.01.2012

bubuko.com,布布扣

 

我们输入1 清空下数据库,检测下是否真正清空.

bubuko.com,布布扣

 

输入3 通过查看所有球队名称来检测 是否数据库里的数据已被清空.

bubuko.com,布布扣

 

这样,我们的客户端远程访问服务端就做好了. :)

这里我们的java网页数据采集器教程也就告于段落了,如果对此感兴趣的学友,可以订阅本博客或是关注一下! 欢迎常来学习和讨论.

原文地址:http://www.cnblogs.com/longwu/archive/2012/01/21/2328710.html

Java网页数据采集器[续篇-远程操作]【转载】,布布扣,bubuko.com

Java网页数据采集器[续篇-远程操作]【转载】

原文:http://www.cnblogs.com/dekevin/p/3574852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!