日期:2014-05-18  浏览次数:20491 次

怎么获得a标记中的文本
例如 <a   id=1   style=color:black   > aaa </a>   这样的标记,我想获得aaa这个值怎么办?获得id也可以

------解决方案--------------------
我以前在JAVA里写过,.NET里还不知道.
下面是用JAVA实现的.
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();
}
}
}