我们如何找出页面中的超链接。
以及如何找出他们是什么? 我需要开发计划Java中的东西不在任何框架的工作,这意味着,通过使用
JAVA.NET。*;方法,任何范围?我该怎么做?
你们能给我一个适当的例子吗?如何在使用java的网页中找到超链接?
我需要得到页面中所有的链接,我需要保存在数据库中,所有域名的链接
我们如何找出页面中的超链接。
以及如何找出他们是什么? 我需要开发计划Java中的东西不在任何框架的工作,这意味着,通过使用
JAVA.NET。*;方法,任何范围?我该怎么做?
你们能给我一个适当的例子吗?如何在使用java的网页中找到超链接?
我需要得到页面中所有的链接,我需要保存在数据库中,所有域名的链接
尝试使用jsoup library。
下载项目罐子并编译此代码段:
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页面的超文本元素和相关信息对他们的号码。
这绝对是一种方式。使用真正的HTML解析器/提取器。 – BalusC 2010-08-03 19:27:07
最好的办法是使用一些HTML解析器库,但如果你不希望使用任何这样的第三方库可能会尝试通过使用来自regex包的Java的模式和匹配器类与正则表达式匹配来实现此目的。
编辑 实施例:
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等
THKS的信息,你能不能给我任何的例子吗? – 2010-08-01 18:15:09
编辑添加示例 – Gopi 2010-08-01 18:44:31
你能给我完整的例子,如添加导入等 – 2010-08-02 12:35:52
可以使用的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
@Naikus:它不工作,它显示“找到了A标签!!! a”,它没有显示HTML – 2010-08-02 12:27:30
@Naikus:对不起没有HTML,没有显示链接 – 2010-08-02 12:35:16
@Alex马修我已经更新的代码在我的答案上显示“”标签 – naikus 2010-08-02 13:20:38
Pattern p = Pattern.compile("(https?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?)");
Matcher m = p.matcher(br.toString());
while (m.find() == true) {
resp.getWriter().print("<a href="+m.group(0).toString()+">"+m.group(0).toString()+"</a><br/>");
}
http://stackoverflow.com/questions/3368618/how-to-find-urls-in-html-using-java/3368634#3368634 – bakkal 2010-08-01 18:15:39