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

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

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

尝试使用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); } 

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

您可以使用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(); } } } } 

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

 java Test http://www.oracle.com/technetwork/java/index.html 

最好的选择是使用一些html解析器库但是如果你不想使用任何这样的第三方库,你可以尝试通过使用来自regex包的java的Pattern和Matcher类与正则表达式匹配来实现这一点。

编辑示例:

 String regex="\\b(?<=(href=\"))[^\"]*?(?=\")"; Pattern pattern = Pattern.compile(regex); Matcher m = pattern.matcher(str_YourHtmlHere); while(m.find()) { System.out.println("FOUND: " + m.group()); } 

在上面的示例中是一个简单的基本正则表达式,它将找到属性href指示的所有链接。 您可能必须增强正则表达式以正确处理所有方案,例如href with url in single quote等。

获取HTML文档中的链接

  Pattern p = Pattern.compile("(https?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?)"); Matcher m = p.matcher(br.toString()); while (m.find() == true) { resp.getWriter().print(""https://stackoverflow.com/questions/3383152/how-to-find-hyperlink-in-a-webpage-using-java/+m.group(0).toString()+"
"); }