zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0
          題目如下:引自http://www.aygfsteel.com/zhoudq/archive/2007/10/23/155363.html

          每5分鐘遍歷一下頁面(http://post.baidu.com/f?kw=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC),?
          請統計頁面中"《"和"》"之間有多少個"異人"這兩個字,將這數值彈出一個alert并且發信給指定的郵件地址?
          獲取頁面內所有地方的以"<<?>>"為標示的這個符號代表書名號,獲取之中的內容?
          <<使用正則表達式>>
          功能點:?
          1)URL抓取頁面?
          2)正則表達式匹配?
          3)郵件系統調用?
          請注意設計思路和代碼規范

          就這個問題我寫了一個Demo,代碼如下:
          package org.zy.demo;

          import java.io.BufferedInputStream;
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.Reader;
          import java.net.MalformedURLException;
          import java.net.URL;
          import java.util.Date;
          import java.util.Timer;
          import java.util.TimerTask;
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;

          /**
          ?*
          ?* @author zhangyi
          ?* zhyiwww@163.com
          ?*
          ?* 從url里面讀取內容,然后分析,用正則表達式匹配,返回結果
          ?*/

          /*
          ??? ?每5分鐘遍歷一下頁面(http://post.baidu.com/f?kw=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC),
          ??? 請統計頁面中"《"和"》"之間有多少個"異人"這兩個字,將這數值彈出一個alert并且發信給指定的郵件地址
          ??? 獲取頁面內所有地方的以"<< >>"為標示的這個符號代表書名號,獲取之中的內容
          ??? <<使用正則表達式>>
          ??? 功能點:
          ??? 1)URL抓取頁面
          ??? 2)正則表達式匹配
          ??? 3)郵件系統調用
          ?*/
          public class ParseUrlContent {
          ???
          ???
          ??? public static void main(String[] args){
          ??? ??? Timer t = new Timer();
          ??? ??? t.schedule(new ParseTask(),0,5*60*60);??? ???
          ??? }
          ???
          ???
          }

          class ParseTask extends TimerTask{
          ??? public void run(){
          ??? ??? System.out.println("runing");
          ??? ??? try {
          ??? ??? ??? // create url object
          ??? ??? ??? URL url = new URL("http://post.baidu.com/f?kw=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC");
          ??? ??? ??? // get the input stream reader from the url
          ??? ??? ??? InputStreamReader isr = new InputStreamReader(url.openStream());
          ??? ??? ??? // buffered the reader
          ??? ??? ??? BufferedReader br = new BufferedReader(isr);
          ??? ??? ???
          ??? ??? ??? // store the temp string
          ??? ??? ??? StringBuffer sb = new StringBuffer(10000);
          ??? ??? ??? // temporary variable for each read
          ??? ??? ??? String tmp="";
          ??? ??? ???
          ??? ??? ??? // read the content from reader
          ??? ??? ??? while((tmp=br.readLine())!=null){
          ??? ??? ??? ??? sb.append(tmp);
          ??? ??? ??? }
          ??? ??? ??? System.out.println(sb.toString());
          ??? ??? ??? // match from the orginal string using? reglex express
          ??? ??? ??? Pattern p = Pattern.compile("<<.*異人.*>>");
          ??? ??? ??? Matcher m = p.matcher(sb.toString());????? ??
          ??? ??? ??? // 此處可以做進一步的處理
          ??? ??? ???
          ??? ??? ???
          ??? ??? ???
          ??? ??? } catch (MalformedURLException e) {
          ??? ??? ??? // TODO Auto-generated catch block
          ??? ??? ??? e.printStackTrace();
          ??? ??? } catch (IOException e) {
          ??? ??? ??? // TODO Auto-generated catch block
          ??? ??? ??? e.printStackTrace();
          ??? ??? }
          ??? }
          }
          實現思路:
          1 從url讀取內容流
          2 解析流,用正則表達式來匹配取出想要查找的內容

          我沒有詳細的實現匹配的部分,其實,如果是要迭代的去遍歷內容里面所有的url,然后再解析也是可以實現的,就把上面的代碼封裝成一個方法parseUrl(URL url),然后,解析,迭代,就可以了。
          這就是我的實現思路。



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2007-10-24 14:34 zhyiwww 閱讀(1584) 評論(1)  編輯  收藏 所屬分類: java basic

          FeedBack:
          # re: 就一個面試題做的一個小小Demo
          2007-10-24 22:23 | 快譯站
          不錯,總結的很好
          請問博主有沒有搞論壇呢
          如果有興趣請加入技術qq群23133419
          本人QQ 191660822  回復  更多評論
            
          主站蜘蛛池模板: 明光市| 西畴县| 澄城县| 屯门区| 黄石市| 阿勒泰市| 鄂托克旗| 孝义市| 和林格尔县| 隆回县| 临海市| 彰化市| 疏勒县| 富顺县| 双城市| 榆社县| 镇康县| 无锡市| 铜梁县| 尚义县| 临沭县| 申扎县| 建宁县| 广河县| 义乌市| 富顺县| 阿瓦提县| 五河县| 淅川县| 大理市| 曲麻莱县| 元江| 太原市| 南涧| 澳门| 长沙市| 乐亭县| 卓尼县| 千阳县| 攀枝花市| 新乡市|