日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java在网页填写集数据,java网页数据采集(中篇-数据存储)

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java在网页填写集数据,java网页数据采集(中篇-数据存储) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上期我們學習了html頁面的數據采集,為了方便我們今后來調用收集到的數據,首先我們需要學習下如何將這些采集到的數據存儲起來(MySql數據庫).

打開MySql數據庫,創建數據庫 和表 (拷貝如下代碼 到mysql里(如果沒有界面管理工具,就在DOS窗口里輸入創建數據庫的語句)直接執行即可).

創建MySql數據庫

#創建數據庫 htmldatacollection

CREATE DATABASE htmldatacollection;

#在創建表之前 我們需要使用數據庫htmldatacollection

use htmldatacollection;

#在數據庫里 創建一個表 Premiership 用于存儲我們收集到的數據

#這里為了方便 所有字段 全部是字符串格式

CREATE TABLE Premiership(

Date varchar(15),

HomeTeam varchar(20),

AwayTeam varchar(20),

Result varchar(20)

)

主程序代碼數據庫弄好了,我們開始實施java代碼,?這里簡單介紹下各個類以及類所包含的方法

DataStructure類? 簡單數據結構 里面包含了相應的字段? 用于將收集的數據臨時性存儲

package org.footballresults;

public class DataStructer {

public String hometeam ;

public String awayteam ;

public String date ;

public String result ;

}

GroupMethod類 以及包含的? regularGroup()方法 用于正則匹配html 源代碼上的數據

package org.footballresults;

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class GroupMethod {

/**

* @param args

*/

// 傳入2個字符串參數 一個是pattern(我們使用的正則) 另一個matcher是html源代碼

public String regularGroup(String pattern, String matcher) {

// ……………………CASE_INSENSITIVE啟用不區分大小寫的匹配

// compile函數將給定的正則表達式編譯到具有給定的標志的模式p中

Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);

// 創建匹配給定輸入與此模式的匹配器m,其返回類型是 Matcher類型

//

Matcher m = p.matcher(matcher);

if (m.find()) { // 如果讀到

// group方法返回匹配操作所匹配的子序列等價于substring()方法

return matcher.substring(m.start(), m.end());// m.group();// 返回捕獲的數據

} else {

return ""; // 否則返回一個空值

}

}

}

MySql類 以及包含的 datatoMySql() 方法 用于執行SQL插入語句 將臨時存儲在數據結構里的數據 插入到MySql數據庫中

package org.footballresults;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

//MySql類用于實現數據庫的操作

public class MySql {

// 定義MySql驅動,數據庫地址,數據庫用戶名 密碼 執行語句 數據庫連接

public String driver = "com.mysql.jdbc.Driver";

public String url = "jdbc:mysql://127.0.1:3306/htmldatacollection";

public String user = "root";

public String password = "1";

public Statement stml = null;

public Connection conn = null;

// 插入數據

public void datatomysql(String sqlleague) {

try {

Class.forName(driver).newInstance();

} catch (InstantiationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

System.out.println("沒有找到數據庫驅動");

e.printStackTrace();

}

// 創建連接

try {

conn = DriverManager.getConnection(url, user, password);

if (conn == null)

System.out.println("數據庫連接失敗");

// 創建一個statement對象將sql語句發送到數據庫

stml = conn.createStatement();

} catch (SQLException e) {

// TODO Auto-generated catch block

System.out.println("數據庫連接失敗");

e.printStackTrace();

}

// 執行sql插入語句

try {

stml.executeUpdate(sqlleague);

} catch (SQLException e) {

// TODO Auto-generated catch block

System.out.println("數據導入失敗");

e.printStackTrace();

}

try {

// 結束插入語句

stml.close();

// 關閉數據庫連接

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 輸出數據

public void output() {

}

}

Main 主函數 用于數據輸出

package org.footballresults;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.URL;

/**

* Main主函數 用于數據采集

*

* @author SoFlash - 博客園 http://www.cnblogs.com/longwu

*/

public class Main {

public static void main(String[] args) {

// 首先用一個字符串 來裝載網頁鏈接

String strUrl = "http://www.footballresults.org/league.php?all=1&league=EngPrem";

String sqlleague = "";

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 = ""; // 新增一個空字符串strRead來裝載 BufferedReader 讀取到的內容

// 定義3個正則 用于匹配我們需要的數據

String regularDate = "(\\d{1,2}\\.\\d{1,2}\\.\\d{4})";

String regularTwoTeam = ">[^<>]*";

String regularResult = ">(\\d{1,2}-\\d{1,2})";

// 創建一個GroupMethod類的對象 ,進行正則匹配

GroupMethod gMethod = new GroupMethod();

// 創建數據結構對象,存儲下面的數據

DataStructer ds = new DataStructer();

// 創建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("")) {

ds.date = strGet;

// System.out.println("Date:" + strGet);

// 這里索引+1 是用于獲取后期的球隊數據

++index; // 因為在html頁面里 源代碼里 球隊數據是在剛好在日期之后

}

/**

* 用于獲取2個球隊的數據

*/

strGet = gMethod.regularGroup(regularTwoTeam, strRead);

if (!strGet.equals("") && index == 1) { // 索引為1的是主隊數據

// 通過subtring方法 分離出 主隊數據

strGet = strGet.substring(1, strGet.indexOf(""));

ds.hometeam = strGet;

// System.out.println("HomeTeam:" + strGet); // 打印出主隊

index++; // 索引+1之后 為2了

// 通過subtring方法 分離出 客隊

} else if (!strGet.equals("") && index == 2) { // 這里索引為2的是客隊數據

strGet = strGet.substring(1, strGet.indexOf(""));

ds.awayteam = strGet;

// System.out.println("AwayTeam:" + strGet); // 打印出客隊

index = 0;

}

/**

* 用于獲取比賽結果

*/

strGet = gMethod.regularGroup(regularResult, strRead);

if (!strGet.equals("")) {

// 這里同樣用到了substring方法 來剔除'" 標簽 來獲取我們想要的比賽結果

strGet = strGet.substring(1, strGet.indexOf(""));

ds.result = strGet;

// System.out.println("Result:" + strGet);

// System.out.println();

// MySql插入語句

sqlleague = "INSERT INTO tt values(\"" + ds.date + "\","

+ "\"" + ds.hometeam + "\"," + "\"" + ds.awayteam

+ "\"," + "\"" + ds.result + "\")";

// 調用函數,將數據存入到數據庫中

ms.datatomysql(sqlleague);

i++;

System.out.println("第" + i + "條數據插入成功");

}

}

// 當讀完數據后 記得關閉 BufferReader

br.close();

// System.out.println("共收集到" + i + "條比賽記錄");// 打印出循環次數

System.out.println("數據存入完畢,共導入數據庫" + i + "記錄");

} catch (IOException e) {

// 如果出錯 拋出異常

e.printStackTrace();

}

}

}

運行查看好了,下面我們來執行下 看看結果.

這樣,我們2011-2012英超聯盟賽季的比賽戰績就全部收集并存到MySql數據庫里了. ?:)

總結

以上是生活随笔為你收集整理的java在网页填写集数据,java网页数据采集(中篇-数据存储)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费播放视频 | 日韩一级 | 九一国产精品 | 成人免费av| 婷婷五月小说 | 亚洲成人www | 国产一区二区三区视频免费观看 | 成人免费超碰 | 国产精品国语对白 | 神马午夜激情 | 野花中文免费观看6 | 国产一区在线免费观看 | 成人手机在线播放 | 不卡av一区二区 | 欧美一区二区三区精品 | 韩国一区二区视频 | 日本少妇激三级做爰在线 | 亚洲清色 | a级在线观看 | 欧美性色网站 | 日日摸日日碰夜夜爽无码 | 毛片在线视频观看 | 少妇又紧又色又爽又刺激视频 | 日本一级理论片在线大全 | 麻豆国产免费 | 少妇的激情 | 欧美激情在线狂野欧美精品 | 秋霞国产| 空姐毛片| 色女孩综合 | 亚洲综合一区二区 | 99在线精品免费视频 | 人妻91麻豆一区二区三区 | 欧美精品乱码99久久蜜桃 | www.久久久久久久 | 男男车车的车车网站w98免费 | 噜噜噜久久 | 青青草在线观看视频 | 亚洲精品第三页 | 日本深夜福利 | 国产丝袜久久 | 国模二区 | 亚洲视频在线观看视频 | 精品视频站长推荐 | 99久久久无码国产精品性黑人 | 少妇av导航 | 伊人丁香 | 日韩狠狠 | 亚洲视频123 | 欧美精品免费看 | 日本一区二区在线免费观看 | 国产成人无码精品久久二区三 | jizz自拍 | 精品不卡一区二区三区 | 亚洲在线成人 | 青春草网站 | 一区二区三区美女 | 18在线观看视频 | 色综合成人 | www.黄色网址 | 国产精品久久久久久久毛片 | 欧美日韩xxx | 国产日韩在线播放 | 午夜不卡福利视频 | 中文字幕 欧美日韩 | 久青草免费视频 | 午夜日韩在线 | 本庄优花番号 | 黄色一级视频在线观看 | 亚洲区一区二区三区 | 色四月| 四虎久久| 99国产精品久久久 | 狠狠干干干 | 丝袜视频一区 | 欧美日韩亚洲国产精品 | 中文字幕2区 | 欧美日韩精品一二三区 | 无码人妻精品中文字幕 | 日本美女交配 | 日韩av有码 | 一区二区视频在线看 | 97成人精品 | 国产激情在线 | 久久精品成人av | 澳门av网站 | 91精品国产91久久久久久黑人 | 亚洲黄色小视频 | 韩国一区二区在线播放 | 成人性免费视频 | 国产片高清在线观看 | 在线观看第一页 | 美女三区| 丁香久久婷婷 | 美女脱了裤子让男人捅 | 伊人66| 国产精品国产三级国产aⅴ中文 | a√在线观看 | 日本大尺度吃奶做爰视频 |