网站程序自带的采集器采集文章(如何在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方法 来剔除'

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线