package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Kurasu {
static public String getURL(String u) {
URL url;// 用来读取网站的html源码
InputStream is;// 用来读取html源码
InputStreamReader isr;// 用来读取html源码
BufferedReader r;// 缓冲区,一次读取一行
String str;// 将读取到的一行数据放到这里
String html = "";// 用来存储网站的html源码
try {
System.out.println("Reading URL:" + u);
url = new URL(u);
is = url.openStream();// 打开数据流
isr = new InputStreamReader(is);
r = new BufferedReader(isr);
// 循环读取html源码
do {
str = r.readLine();
if (str != null) {// 当读取到的那一行不为空时
System.out.println(str);// 将读取到的一行显示到控制台
html = html + str;// 将读取到的每一行累加
}
} while (str != null);
} catch (MalformedURLException e) {
System.out.println("Must enter a valid URL");
} catch (IOException e) {
System.out.println("Can't connect");
}
return html;
}
static public void main(String args[]) throws IOException {
// 获得网站的html代码,并放到str中.
String str = getURL("http://www.163.com");
// // 表示/
// /s 表示匹配一个空白字符,包括/n,/r,/f,/t,/v等
// * 表示匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
// [^>] 表示不是">"中的任何一个字符
// [^<] 表示不是"<"中的任何一个字符
Pattern p = Pattern.compile("<a//s*href=[^>]*>[^<]*</a>");// 编译正则表达式后放到p里面
Matcher m = p.matcher(str);// 匹配正则表达式
boolean result = m.find();
// 循环输出所有<a></a>标签
while (result) {
System.out.println(m.group());
result = m.find();
}
}
}

被折叠的 条评论
为什么被折叠?



