zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0
题目如下:引自http://www.blogjava.net/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.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|
posted on 2007-10-24 14:34 zhyiwww 阅读(1567) 评论(1)  编辑  收藏 所属分类: java basic

FeedBack:
# re: 就一个面试题做的一个小小Demo
2007-10-24 22:23 | 快译站
不错,总结的很好
请问博主有没有搞论坛呢
如果有兴趣请加入技术qq群23133419
本人QQ 191660822  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: