比如通过一个地址得到一个网页,然后得到网页中所有的链接地址,不知道程序该如何实现,有哪几种方式,最好是java程序实现,谢谢

解决方案 »

  1.   

    把网页内容读取回来,然后分析其中的内容,将<a>标签<form>标签的内容解析出来。
    获得网页的内容可以使用URLConnection。另外为了规范化读取回来的HTML页面内容,可以使用JTidy来整理HTML页面。
      

  2.   

    读取页面的内容我知道怎么做,但解析<a>标签那怎么弄啊?jdk里有现成的方法吗?还是需要用正则表达式?如果要用正则表达式那表达式是怎么样的?希望能赐教一下,谢谢
      

  3.   

    用HtmlParser,我最近恰好在研究,写了一小段:import org.htmlparser.Parser;
    import org.htmlparser.filters.*;
    import org.htmlparser.tags.LinkTag;
    import org.htmlparser.util.*;
    public class TestParser { 
    public void getAllUrls(String url) { 
    NodeList nodeList = null;
    try { 
    Parser p = new Parser(url);
    p.setEncoding("gb2312");
    //nodeList = p.parse(new TagNameFilter("A")); // 使用TagNameFilter
    nodeList = p.parse(new NodeClassFilter(LinkTag.class)); // 使用NodeClassFilter
    } catch (ParserException e) { 
    e.printStackTrace();
    }
    if(nodeList != null && nodeList.size() > 0) { 
    for(int i = 0; i < nodeList.size(); i++) { 
    System.out.println(((LinkTag)nodeList.elementAt(i)).getLink()+"\n"+((LinkTag)nodeList.elementAt(i)).getLinkText());
    }
    }
    }    /**
        * at param args
        */
    public static void main(String[] args) { 
        // TODO Auto-generated method stub
    TestParser website= new TestParser();
    website.getAllUrls("http://www.fsonline.com.cn");
    }
    }
      

  4.   

    推荐用正则
    Pattern p2 = Pattern.compile("<[aA] href=[\"']?([^\"'>]*)[\"']?>");
    String str = "<a href=\"123.com\">";
    Matcher m = p2.matcher(str);
    while (m.find()){
    System.out.println(m.group(1));
    }
      

  5.   

    正则总会有问题,还是parser好,不过就是不太会用