国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于Java的數據采集(一)

2019-11-14 20:50:19
字體:
來源:轉載
供稿:網友
基于java的數據采集(一)

之前寫過2篇關于php數據采集入庫的文章:

基于PHP數據采集入庫(一):http://www.survivalescaperooms.com/lichenwei/p/3872307.html

基于PHP數據采集入庫(二):http://www.survivalescaperooms.com/lichenwei/p/3873281.html

《基于Java的數據采集(二)》:http://www.survivalescaperooms.com/lichenwei/p/3905370.html

《基于Java數據采集入庫(三)》:http://www.survivalescaperooms.com/lichenwei/p/3907007.html

《基于Java數據采集入庫(終結篇)》:http://www.survivalescaperooms.com/lichenwei/p/3910492.html

其實采集的原理都是一樣的:遠程獲取信息->提取所需內容(正則)->分類存儲->讀取->展示

用什么編程語言沒所謂,編程語言只是種工具

這次來采集一個足球網站的數據:http://www.footballresults.org/league.php?league=EngDiv1

下圖是我們要采集的數據:

好了,關于采集原理就看上面那2篇文章吧,剩下的直接上代碼:

GerData.java(采集數據方法封裝)

其實也就是簡單的匹配正則:

group():返回在以前匹配操作期間由給定組捕獲的輸入子序列。

find():嘗試查找與該模式匹配的輸入序列的下一個子序列。

 1 package com.lcw.curl;
 2  3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5  6 public class GetData { 7      8     /** 9      * 10      * @param regex 正則表達式11      * @param content 所要匹配的內容12      * @return13      */14     public String getData(String regex,String content){15         Pattern pattern=Pattern.compile(regex, Pattern.CASE_INSENSITIVE);//設定正則表達式,不區分大小寫16         Matcher matcher=pattern.matcher(content);17         if(matcher.find()){18             return matcher.group();19         }else{20             return "";21         }22     }23 24 }

CurlMain.java(主程序)

InputStreamReader()是字節流通向字符流的橋梁。

InputStreamReader()是字節流通向字符流的橋梁。

openStream()打開到此URL的連接并返回一個用于從該連接讀入的字節流。

 1 package com.lcw.curl; 2  3 import java.io.BufferedReader; 4 import java.io.InputStreamReader; 5 import java.net.URL; 6  7  8 public class CurlMain { 9 10     /**11      * @param args12      */13     public static void main(String[] args) {14         try {15             String address="http://www.footballresults.org/league.php?league=EngDiv1";16             URL url=new URL(address);17             InputStreamReader inputStreamReader=new InputStreamReader(url.openStream(),"utf-8");//打開地址,以UTF-8編碼的形式返回字節并轉為字符18             BufferedReader bufferedReader=new BufferedReader(inputStreamReader);//從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行的高效讀取。19             20             GetData data=new GetData();21             String content="";//用來接受每次讀取的行字符22             int flag=0;//標志,隊伍信息剛好在日期信息后面,則正則相同,用于分離數據23             String dateRegex="http://d{1,2}//.//d{1,2}//.//d{4}";//日期匹配正則表達式24             String teamRegex=">[^<>]*</a>";//隊伍匹配正則表達式25             String scoreRegex=">(//d{1,2}-//d{1,2})</TD>";//比分正則表達式26             int i=0;//記錄信息條數27             28             while((content=bufferedReader.readLine())!=null){//每次讀取一行數據29                 //獲取比賽日期信息30                 String dateInfo=data.getData(dateRegex, content);31                 if(!dateInfo.equals("")){32                     System.out.

數據輕松采集,效果如下圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湟源县| 中牟县| 土默特右旗| 武夷山市| 菏泽市| 潼关县| 衡南县| 郁南县| 嘉义市| 曲阜市| 台安县| 剑川县| 静乐县| 万载县| 西峡县| 连城县| 资溪县| 伽师县| 彝良县| 平原县| 合水县| 汉川市| 汶川县| 泸定县| 兴隆县| 泾川县| 万荣县| 桓台县| 无极县| 宾阳县| 城市| 连平县| 泗洪县| 德化县| 浙江省| 陇西县| 定兴县| 阿荣旗| 册亨县| 博客| 漠河县|