日韩性视频-久久久蜜桃-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网页数据采集(中篇-数据存储)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 善良的女邻居在线观看 | 奇米影视第四色7777 | 欧美伦理一区二区三区 | 久久久久久久影视 | 夜色资源网 | www99热| 国产无遮挡又黄又爽又色 | 天天干 夜夜操 | 成人看片网站 | 欧美日韩1区 | 97影院在线午夜 | 天天干国产 | 看全黄大色黄大片 | 91精东传媒理伦片在线观看 | 波多野结衣视频播放 | 性网| 色七七亚洲 | 欧美成人三级在线播放 | 男女免费视频网站 | 欧美性受xxxx黑人xyx性爽 | 中文字幕乱码人妻无码久久 | 精品无码一区二区三区电影桃花 | 激情综合网五月天 | 亚洲操| 免费观看成人 | 国产精品对白刺激久久久 | 黑人与亚洲人色ⅹvideos | 最新黄色在线 | 加勒比视频在线观看 | 久久精品国产99久久不卡 | 国产成人精品亚洲精品色欲 | 亚洲熟妇无码一区二区三区导航 | 正在播放91 | 天天色天天综合 | 制服丝袜先锋影音 | 亚洲AV无码阿娇国产精品 | 天堂资源 | 伊人伊人鲁 | 国产精品av在线免费观看 | 色呦呦影院 | 美女少妇一区二区 | 国产日韩欧美精品一区二区 | 女同性恋一区二区三区 | 一区二区91| 国产无码精品在线播放 | 中文字幕乱码一区二区 | 中文写幕一区二区三区免费观成熟 | 日日摸日日碰 | 日本高清不卡在线 | 久久视频这里只有精品 | a级片在线播放 | 国产中文欧美日韩在线 | 神马福利视频 | 国产亚洲精品久久久久久777 | 91精品国产aⅴ一区 黄色a网 | 色啪视频| 国产乱码久久久久 | 美女光屁屁露胸胸 | 极品少妇xxxx精品少妇 | 久久国产三级 | 亚洲av久久久噜噜噜熟女软件 | 久久精品人妻一区二区 | 国产精品第8页 | a毛片毛片av永久免费 | 亚洲少妇激情 | 精品久久久无码中文字幕 | 手机av免费在线观看 | 狠狠欧美 | 日韩色影院 | 在线观看日韩国产 | 久久久免费在线观看 | 在线a天堂 | 91成人在线观看喷潮动漫 | 成人区人妻精品一区二区网站 | 又黄又色 | 亚洲午夜精品久久久 | 国产高潮视频 | 六月丁香婷婷网 | 色婷婷综合成人av | 午夜看片在线观看 | 欧美日韩激情一区二区 | 一区二区网 | aaaaa一级片| 精品黄网| 69xav| 色噜噜一区二区三区 | 青青成人网 | 日本精品免费一区二区三区 | 国产亚洲精品久久久久久久 | 亚洲不卡在线 | 国产精品无码一区二区三区在线看 | 岛国av在线免费观看 | 91免费看片网站 | 亚洲精品国产欧美 | 亚洲福利小视频 | 国产aaa毛片 | 一区二区三区激情视频 | 射进来av影视网 | 国产免费黄色网址 |