获取页面内所有地方的以"<< >>"为标示的这个符号代表书名号,获取之中的内容
<<使用正则表达式>>
功能点:
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=���˰���¼),
请统计页面中"《"和"》"之间有多少个"异人"这两个字,将这数值弹出一个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 ;
// 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,然后再解析也是可以实现的,就把上面的代码封装成一个方法parse,然后,解析,迭代,就可以了。
这就是我的实现思路。