网站程序自带的采集器采集文章(如何在MySql里创建数据库,请看Java网页数据采集器实例教程)
优采云 发布时间: 2022-01-17 22:19网站程序自带的采集器采集文章(如何在MySql里创建数据库,请看Java网页数据采集器实例教程)
这个问题的概述
上一期我们学习了如何将html采集中的数据存入MySql数据库。本期我们将学习如何在存储的数据中查询我们真正想看到的数据。
数据采集2011-2012赛季英超球队战绩
如果您是初学者,以下内容可能会对您有所帮助
在使用java操作MySql数据库之前,我们需要在工程文件中导入一个jar包(mysql-connector-java-5.1.18-bin)
可以从MySql官网下载Connector/J5.1.18
第一次使用MySql?请参阅 java 与 MYSQL 的连接
请看Eclipse下如何导入jar包
如果你是初学者,想使用MySql数据库,可以到XAMPP中文官网下载XAMPP包
XAMPP(Apache+MySQL+PHP+PERL)是一款功能强大的XAMPP软件站搭建集成软件包,一键安装,无需修改配置文件,非常好用。
关于如何在MySql中创建数据库,请看Java网页数据采集器示例教程【第二部分-数据存储】。
数据库准备好了,我们开始写java程序代码;
本期我们主要在MySql类中增加了一个数据查看方法queryMySql(),并增加了一个DataQuery类,里面收录了一些查询游戏结果的方法。
主程序代码
这里简单介绍一下每个类及其收录的方法
Data采集AndStorage 类和其中的dataCollectAndStore() 方法用于Html 数据采集和存储
<p>DataCollectionAndStorage类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
/**
* DataCollectionAndStorage类 用于数据的收集和存储
* @author SoFlash - 博客园 http://www.cnblogs.com/longwu
*/
public class DataCollectionAndStorage {
/**
* dataCollectAndStore()方法 用于Html数据收集和存储
*/
public void dataCollectAndStore() {
// 首先用一个字符串 来装载网页链接
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{1,2}\\.\\d{1,2}\\.\\d{4})";
String regularTwoTeam = ">[^]*</a>";
String regularResult = ">(\\d{1,2}-\\d{1,2})";
//创建 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("</a>"));
//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("</a>"));
//System.out.println("AwayTeam:" + strGet); // 打印出客队
//将收集到的客队名称 存到数据结构里
ds.awayTeam = strGet;
index = 0; //收集完客队名称后 需要将索引还原 用于收集下一条数据的主队名称
}
/**
* 用于获取比赛结果
*/
strGet = gMethod.regularGroup(regularResult, strRead);
if (!strGet.equals("")) {
// 这里同样用到了substring方法 来剔除'