如何使用java在网页中查找超链接?

Ale*_*hew 0 java hyperlink

我们如何才能找到页面中的超链接.
以及如何找出他们都是什么?我需要开发计划java中的东西而不是任何框架工作,这意味着,使用
JAVA.NET.*; 方法,任何范围?我该怎么做?
你们能给我一个恰当的例子吗?

我需要获取页面中的所有链接,我需要将其保存在数据库中,所有链接都与域名

nai*_*kus 5

您可以使用javax.swing.text.html和javax.swing.text.html.parser包来实现此目的:

import java.io.*;
import java.net.URL;
import java.util.Enumeration;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;

public class Test {
   public static void main(String[] args) throws Exception  {
      Reader r = null;

      try   {
         URL u = new URL(args[0]);
         InputStream in = u.openStream();
         r = new InputStreamReader(in);

         ParserDelegator hp = new ParserDelegator();
         hp.parse(r, new HTMLEditorKit.ParserCallback() {
            public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
               // System.out.println(t);
               if(t == HTML.Tag.A)  {
                  Enumeration attrNames = a.getAttributeNames();
                  StringBuilder b = new StringBuilder();
                  while(attrNames.hasMoreElements())    {
                      Object key = attrNames.nextElement();
                      if("href".equals(key.toString())) {
                          System.out.println(a.getAttribute(key));
                      }
                  }
               }
            }
         }, true);
      }finally {
         if(r != null)  {
            r.close();
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

编译并以这种方式调用它:

java Test http://www.oracle.com/technetwork/java/index.html
Run Code Online (Sandbox Code Playgroud)


Imp*_*tro 5

尝试使用jsoup库.

下载项目jar并编译此代码段:

    Document doc = Jsoup.parse(new URL("http://www.bits4beats.it/"), 2000);

    Elements resultLinks = doc.select("a");
    System.out.println("number of links: " + resultLinks.size());
    for (Element link : resultLinks) {
        System.out.println();
        String href = link.attr("href");
        System.out.println("Title: " + link.text());
        System.out.println("Url: " + href);
    }
Run Code Online (Sandbox Code Playgroud)

该代码在html页面中打印超文本元素的数量并显示它们的信息.