资源简介
最近,由于一些需要,用到了java和正则,做了个的足球网站的数据采集程序,由于是第一次做关于java的html页面数据采集,必然在网上查找了很多资料,但是发现运用如此广泛的java在使用正则做html采集方面的(中文)文章是少之又少,都是简单的谈了下java正则的概念,没有真正用在实际网页html采集,所以实例教程更是寥寥无几(虽然java有它自己的Html Parser,而且十分强大),但个人觉得作为如此深入人心的正则表达式,理应有其相关的java实例教程,而且应该很多很全.于是在完成java版的html数据采集程序之后,本人便打算写个关于正则表达式在java上的html页面采集,以便有相关兴趣的读者更好的学习.
代码片段和文件信息
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
/**
* DataStorage类 用于数据的收集和存储
* @author SoFlash - 博客园 http://www.cnblogs.com/longwu
*/
public class DataStorage {
public void dataStore() {
// 首先用一个字符串 来装载网页链接
String strUrl = “http://www.footballresults.org/league.php?all=1&league=EngPrem“;
String sqlLeagues = ““;
try {
// 创建一个url对象来指向 该网站链接 括号里()装载的是该网站链接的路径
// 更多可以看看 http://wenku.baidu.com/view/8186caf4f61fb7360b4c6547.html
URL url = new URL(strUrl);
// InputStreamReader 是一个输入流读取器 用于将读取的字节转换成字符
// 更多可以看看 http://blog.sina.com.cn/s/blog_44a05959010004il.html
InputStreamReader isr = new InputStreamReader(url.openStream()
“utf-8“); // 统一使用utf-8 编码模式
// 使用 BufferedReader 来读取 InputStreamReader 转换成的字符
BufferedReader br = new BufferedReader(isr);
String strRead = ““; // new 一个字符串来装载 BufferedReader 读取到的内容
// 定义3个正则 用于获取我们需要的数据
String regularDate = “(\\d{12}\\.\\d{12}\\.\\d{4})“;
String regularTwoTeam = “>[^<>]*“;
String regularResult = “>(\\d{12}-\\d{12})“;
//创建 GroupMethod类的对象 gMethod 方便后期调用其类里的 regularGroup方法
GroupMethod gMethod = new GroupMethod();
//创建DataStructure数据结构 类的对象 用于数据下面的数据存储
DataStructure ds = new DataStructure();
//创建MySql类的对象 用于执行MySql语句
MySql ms = new MySql();
int i = 0; // 定义一个i来记录循环次数 即收集到的球队比赛结果数
int index = 0; // 定义一个索引 用于获取分离 2个球队的数据 因为2个球队正则是相同的
// 开始读取数据 如果读到的数据不为空 则往里面读
while ((strRead = br.readLine()) != null) {
/**
* 用于捕获日期数据
*/
String strGet = gMethod.regularGroup(regularDate strRead);
// 如果捕获到了符合条件的 日期数据 则打印出来
if (!strGet.equals(““)) {
//System.out.println(“Date:“ + strGet);
//将收集到的日期存在数据结构里
ds.date = strGet;
// 这里索引+1 是用于获取后期的球队数据
++index; // 因为在html页面里 源代码里 球队数据是在刚好在日期之后
}
/**
* 用于获取2个球队的数据
*/
strGet = gMethod.regularGroup(regularTwoTeam strRead);
if (!strGet.equals(““) && index == 1) { // 索引为1的是主队数据
// 通过subtring方法 分离出 主队数据
strGet = strGet.substring(1 strGet.indexOf(““));
//System.out.println(“HomeTeam:“ + strGet); // 打印出主队
//将收集到的主队名称 存到 数据结构里
ds.homeTeam = strGet;
index++; // 索引+1之后 为2了
// 通过subtring方法 分离出 客队
} else if (!strGet.equals(““) && index == 2) { // 这里索引为2的是客队数据
strGet = strGet.substring(1 strGet.indexOf(““));
//System.out.println(“AwayTeam:“ + strGet); // 打印出客队
//将收集到的客队名称 存到数据结构里
ds.awayTeam = strGet;
index = 0; //收集完客队名称后 需要将索引还原 用于收集下一条数据的主队名称
}
/**
* 用于获取比赛结果
*/
strGet = gMethod.regularGroup(regularResult strRead);
if (!strGet.equals(““)) {
// 这里同样用到了substring方法 来剔除‘<‘ 和 ““ 标签 来获取我们想要的比赛结果
strGet = strGet.substring(1 strGet.indexOf(““));
//System.out.println(“Result:“ + strGet);
ds.result = strGet; //将收集到的比赛结果存到数据结构里
//System.o
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-01-23 06:04 htmlDataStorage\
文件 375 2012-01-03 01:29 htmlDataStorage\.classpath
文件 403 2011-12-22 23:32 htmlDataStorage\.project
目录 0 2012-01-23 06:04 htmlDataStorage\.settings\
文件 629 2011-12-22 23:32 htmlDataStorage\.settings\org.eclipse.jdt.core.prefs
目录 0 2012-01-23 06:04 htmlDataStorage\bin\
文件 2896 2012-01-23 06:02 htmlDataStorage\bin\DataStorage.class
文件 355 2012-01-23 06:02 htmlDataStorage\bin\DataStructure.class
文件 873 2012-01-23 06:02 htmlDataStorage\bin\GroupMethod.class
文件 450 2012-01-23 06:03 htmlDataStorage\bin\Main.class
文件 1739 2012-01-23 06:02 htmlDataStorage\bin\MySql.class
文件 789885 2011-11-10 18:31 htmlDataStorage\mysql-connector-java-5.1.18-bin.jar
目录 0 2012-01-23 06:04 htmlDataStorage\src\
文件 4267 2012-01-23 06:02 htmlDataStorage\src\DataStorage.java
文件 259 2012-01-23 06:02 htmlDataStorage\src\DataStructure.java
文件 586 2012-01-23 06:02 htmlDataStorage\src\GroupMethod.java
文件 281 2012-01-23 06:03 htmlDataStorage\src\Main.java
文件 1360 2012-01-23 06:02 htmlDataStorage\src\MySql.java
- 上一篇:骑士游历问题C#解决
- 下一篇:最适合JAVA初学者的Socket点对点聊天工具
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
- Java写的一个简单的字体更改程序
- java8学习教程之lambda表达式的使用方法
评论
共有 条评论