题目如下:引自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 阅读(1575)
评论(1) 编辑 收藏 所属分类:
java basic