读html然后解析得出"<a href="和">"之间的内容,
可以用个递归写个函数来求.

解决方案 »

  1.   

    <img ...>中也有
    <mailto:...>,<telnet...>不知道算不算
    js中也可能隐含超链接,这个不好找
      

  2.   

    刚写的,还可用,没过滤重复的url
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import java.util.regex.*;public class GetURL {
    public GetURL() {
    }

    public ArrayList parse(URL url) throws IOException {
    //找出<和>之间的部分,用正则表达式得到对应的超链接
    InputStream in = url.openStream();
    StringBuffer sb = new StringBuffer();
    int ch;
    boolean flag = false;
    Pattern pattern = Pattern.compile("href=\"?([\\w:.\\/?!@#&]+)\"?");
    //match frame,img
    Pattern pattern1 = Pattern.compile("src=\"?([\\w:.\\/?!@#&]+)\"?");
    ArrayList urls = new ArrayList(10);
    while ((ch=in.read())!=-1) {
    if (ch=='<') {
    flag = true;
    continue;
    }
    if (ch=='>') {
    flag = false;
    Matcher matcher = pattern.matcher(sb.toString());
    if (matcher.find()) {
    String s = matcher.group(1);
    urls.add(s);
    }
    else {
    matcher = pattern1.matcher(sb.toString());
    if (matcher.find()) {
    url.add(matcher.group(1));
    }
    }
    sb.setLength(0);
    continue;
    }
    if (flag) {
    sb.append((char)ch);
    }
    }
    return urls;
    }

    public static void main(String[] args) throws Exception{
    GetURL get = new GetURL();
    URL url = new URL("http://www.bit.edu.cn/");
    ArrayList urls = get.parse(url);
    Iterator iterator = urls.iterator();
    while (iterator.hasNext()) {
    String s = (String)iterator.next();
    System.out.println(s);
    }
    }
    }
      

  3.   

    我以前看到过实现这个功能的javascript你到网上搜索,javascript教程,肯定有实现这个功能的简单函数,或本身js就有这样的函数。。