亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

簡單java采集程序一

2019-11-14 21:03:00
字體:
來源:轉載
供稿:網友
簡單java采集程序一

【目標任務】通過該網站采集全國的手機號碼段至數據庫表中

【完成過程】

1、初涉正則表達式,學會寫簡單的正則表達式

2、獲取單個網頁內容,學會java中基本的IO流

3、將獲取數據插入MySQL數據庫表中,掌握基本的JDBC編程。

5、通過url拼接獲取每一個城市的完整url

6、采集整個網站的號碼段,并使用批處理+預編譯批量插入數據庫表中

7、使用StringBuilder進行優化提速

【數據庫表】注意如果是在cmd命令下建表的話,字段名稱不需要加引號

create table number_segment (`id` bigint not null auto_increment unique,`segment` char(7) not null PRimary key,`province` varchar(255) not null,`city` varchar(255) not null) default charset=utf8;                                  

CE@PZ(2L[]0RZGNR6XS(4UH

【初涉正則表達式】

1、學習簡單的表達式:正則表達式30分入門。

2、在線測試自己寫的表達式:在線測試正則表達式1

3、使用java的Pattern類 和 Matcher類

import java.util.regex.Matcher;import java.util.regex.Pattern;public class test_ZhengZe{public static void main(String[] args){Pattern p = Pattern.compile("(13//d{5}[^<])");String s ="/mobile/guangzhou_1300040.>1300040</a></li><li><a href=/"../../mobile/guangzhou_1300041.html/">1300041</a></li><li><a ";Matcher m = p.matcher(s);while(m.find()){System.out.println("打印出的號碼段落:"+m.group(0));}System.out.print("捕獲的數據有:"+m.groupCount());}}

clipboard

 

【獲取網頁內容】

這里主要用到  InputStream  BufferReader兩個IO流處理類。更多的方法講解見【java獲得采集網頁內容的方法小結

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class getHtml {    public static void main(String[] args) throws Exception    {    long start= System.currentTimeMillis();        String str_url="http://www.hiphop8.com/city/guangdong/guangzhou.php";        //匹配號碼段        Pattern p = Pattern.compile(">(13//d{5}|15//d{5}|18//d{5}|147//d{4})<");        String html = get_Html(str_url);        Matcher m = p.matcher(html);             int num = 0;       while(m.find()){System.out.println("打印出的號碼段落:"+m.group(1)+"  編號"+(++num));}       System.out.println(num);              long end = System.currentTimeMillis();System.out.println("花費的時間"+(end-start)+"毫秒");    }     public static String get_Html(String str_url) throws IOException{    URL url = new URL(str_url);    String content="";StringBuffer page = new StringBuffer();try {BufferedReader in = new BufferedReader(new InputStreamReader(url                    .openStream()));while((content = in.readLine()) != null){page.append(content);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}        return page.toString();    }}
【將采集內容插入數據庫】

java連接mysql數據庫的大概操作是:

加載mysql驅動---》創意一個數據庫連接---》創建一個sql語句執行對象statement---》定義String類型的SQL語句,statment調用SQL語句的執行方法---》關閉statment對象和數據庫。

import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class database {public static String driver ="com.mysql.jdbc.Driver";public static String url    ="jdbc:mysql://127.0.0.1:3306/tele_dat?autoReconnect=true&characterEncoding=UTF-8";public static String user   ="root";public static String passWord = "123456";public static Statement statement = null;public static java.sql.Connection conn = null;public static int i=0;//創建一個插入數據的方法public static void datatoMySql(String sql) throws SQLException {try {Class.forName(driver);} catch (ClassNotFoundException e) {System.out.println("加載驅動失敗");e.printStackTrace();}conn = DriverManager.getConnection(url, user, password);//創建一個連接statement = conn.createStatement();   //創建一個Statemnet對象來傳送SQL語句statement.executeUpdate(sql);}public  static void close() throws SQLException{statement.close();   //關閉數據庫操作對象conn.close();       //關閉數據庫連接}//測試連接數據庫例子public static void main(String args[]){String sql = "insert  into   number_segment(segment,province,city) " +"values (123458,'廣東1','廣州') ";try {datatoMySql(sql);System.out.println("插入成功");} catch (SQLException e) {System.out.println("插入失敗");e.printStackTrace();}try {close();System.out.print("關閉數據庫");} catch (SQLException e) {e.printStackTrace();}}}

我用的是wampsever中集成的mysql數據庫,并在cmd下進行操作,常用命令見:mysql常用的命令見,如果對jdbc編程不熟,可以參考這篇博文。

 

【獲取整個網站中所以城市的URL】

通過查看網站首頁的源代碼,發現可以從這里獲取每一個省份的URL,然后觀察一個省份的頁面,可以獲取該省城市url的部分后綴,由此可以拼接就得到一個完整城市的url.

mport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.util.ArrayList;import java.util.regex.Matcher;import java.util.regex.Pattern;public class get_all_city_url {public static void  main(String[] args) throws Exception {String home_url = "http://www.hiphop8.com";String pattern_pro ="//w{3}//.//w{7}//.//w{3}/////w{4}/////w+";  //匹配省份的URLString pattern_city_hz="<LI><A href=/"(.*?)/" target=_blank>";   //城市后綴Matcher mat_home = get(home_url,pattern_pro);int i = 0;//可以用ArrayList保存所有url,另外可以用StringBuilder對字符串進行相加,不過測試耗時差不多long  start = System.currentTimeMillis();while(mat_home.find()){String city_url_qz = "http://"+mat_home.group()+"/";Matcher mat_city_hz = get(city_url_qz,pattern_city_hz);while(mat_city_hz.find()){i++;String city_url = city_url_qz + mat_city_hz.group(1);System.out.println(i+"  "+city_url);}}long  end = System.currentTimeMillis();long time =end - start;System.out.println("總共用時"+time);}public static  Matcher get(String str, String pa) throws Exception  {String urlsource =get_Html(str);Pattern p = Pattern.compile(pa);Matcher m = p.matcher(urlsource);return m;}public static String get_Html(String str_url) throws IOException{    URL url = new URL(str_url);    String content="";StringBuffer page = new StringBuffer();try {BufferedReader in = new BufferedReader(new InputStreamReader(url                    .openStream()));while((content = in.readLine()) != null){page.append(content);}} catch (IOException e) {e.printStackTrace();}        return page.toString();    }} 

 

3DB6A7ACC5B647B49F182322CEF7B13C

 

       有了上面的基礎,就可以做整個網站的號碼段采集了,不過后面因為插入數據表中的數據是20多萬,所以更多的是要考慮效率問題了,后面的部分見簡單的java采集程序二。

      另外網上有不少的java采集教程,有些寫的很棒,自己深知java打的太少了,寫這篇博文一是為了總結,留個紀念,二是希望能給和我一個的初學者一些幫助,和大家一起交流探討,當然如果文章有寫的不對的地方,還希望大神指出。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产v综合ⅴ日韩v欧美大片| 欧美性xxxx| 国产精品国产福利国产秒拍| 亚洲欧美自拍一区| 国产精品夜色7777狼人| 国产精品成人久久久久| 这里只有精品久久| 亚洲美女精品成人在线视频| 精品视频偷偷看在线观看| 欧美另类xxx| 亚洲国语精品自产拍在线观看| 亚洲国产成人91精品| 亚洲综合社区网| 日韩性xxxx爱| 国产成人在线亚洲欧美| 久久中文字幕在线| 日本免费一区二区三区视频观看| 国产免费成人av| 亚洲最大的网站| 亚洲免费一级电影| 国产精品免费观看在线| 国产一级揄自揄精品视频| 精品在线观看国产| 91爱爱小视频k| 国内精品免费午夜毛片| 国产欧美一区二区三区久久人妖| 欧美成人激情图片网| 久久久久女教师免费一区| 日本久久久久久久| 国产在线98福利播放视频| 日韩中文字幕视频| 久久精品国产精品| 亚洲桃花岛网站| 欧美色另类天堂2015| 久久精品国产v日韩v亚洲| 欧美裸体视频网站| 国产日韩在线播放| 日韩成人久久久| 国产精品美腿一区在线看| 国产成人av在线播放| 国产精品久在线观看| 中文字幕在线精品| 国产精品91一区| 久久天天躁狠狠躁夜夜躁2014| 亚洲美女久久久| 欧美性视频在线| 一区二区av在线| 亚洲精品福利在线| 粉嫩老牛aⅴ一区二区三区| 国产丝袜视频一区| 亚洲第一福利在线观看| 久久偷看各类女兵18女厕嘘嘘| 亚洲一区二区中文字幕| 久久精品视频在线播放| 91精品国产色综合久久不卡98| 一本色道久久综合狠狠躁篇怎么玩| 国产91精品在线播放| 国产又爽又黄的激情精品视频| 国产欧美精品日韩| 日韩精品久久久久久福利| 91成品人片a无限观看| 97视频在线观看成人| 日韩av一区在线| 国产丝袜一区视频在线观看| 国产精品白嫩初高中害羞小美女| 日韩国产欧美精品一区二区三区| 亚洲老板91色精品久久| 国内成人精品一区| 亚洲精品天天看| 1769国产精品| 国产成人啪精品视频免费网| 欧美日韩国产va另类| 久久高清视频免费| 欧美在线观看视频| 91精品久久久久久久久久久久久| 亚洲激情在线观看视频免费| 成年无码av片在线| 日韩欧美在线视频观看| 一本色道久久综合亚洲精品小说| 国产日韩欧美一二三区| 日韩在线视频观看| 久久成人综合视频| 国产精品成人一区二区| 91最新在线免费观看| 欧美极品少妇与黑人| 中文字幕精品—区二区| 91美女片黄在线观| 亚洲新中文字幕| 性色av一区二区咪爱| 国产在线不卡精品| 国产一区欧美二区三区| 成人免费在线视频网址| 动漫精品一区二区| 色琪琪综合男人的天堂aⅴ视频| 欧美精品电影免费在线观看| 欧美日韩免费观看中文| 亚洲国产精品人久久电影| 久久精品91久久久久久再现| 麻豆国产精品va在线观看不卡| 欧美激情第三页| 欧美大尺度电影在线观看| 亚洲片在线观看| 播播国产欧美激情| 国产精品成人va在线观看| 亚洲va码欧洲m码| 亚洲欧美成人在线| 26uuu另类亚洲欧美日本老年| 国产精品久久久久一区二区| 日韩国产高清污视频在线观看| 久久精品国产精品亚洲| 成人在线精品视频| 午夜免费在线观看精品视频| 国产日韩欧美另类| 国产主播精品在线| 精品小视频在线| 国产精品爽爽爽爽爽爽在线观看| 亚洲xxxx在线| 中文欧美日本在线资源| 亚洲黄色av网站| 欧美丰满老妇厨房牲生活| 在线精品国产成人综合| 色悠悠久久久久| 在线丨暗呦小u女国产精品| 国产精品欧美激情| 亚洲久久久久久久久久| 欧美在线www| 91香蕉亚洲精品| 成人精品网站在线观看| 日韩欧美福利视频| 国产精品久久久久久久久久久久久| 欧美色视频日本高清在线观看| 亚洲日韩欧美视频| 精品亚洲国产成av人片传媒| 中文字幕欧美日韩在线| 国产精品视频免费在线| 亚洲精品白浆高清久久久久久| 亚洲视频在线观看视频| 国模精品系列视频| 欧美激情一区二区三区久久久| 精品亚洲精品福利线在观看| 自拍偷拍亚洲在线| 国产精品96久久久久久又黄又硬| 国产精品日韩在线播放| 亚洲综合成人婷婷小说| 久久精品视频播放| 久久人人爽人人| 国产中文字幕日韩| 亚洲国内高清视频| 成人啪啪免费看| 亚洲激情视频在线观看| 成人午夜在线视频一区| 欧美激情性做爰免费视频| 国产99视频精品免视看7| 欧美精品制服第一页| 91精品国产91久久久久久| 精品亚洲夜色av98在线观看| 亚洲精品国产精品乱码不99按摩| 日韩欧美亚洲成人| 色悠久久久久综合先锋影音下载| 国产精品99久久99久久久二8| 97香蕉久久超级碰碰高清版| 中文字幕亚洲情99在线| 国产精品福利在线观看网址| 欧美激情亚洲另类|