2011-09-13 59 views
2

我有最基本的java代码来做一个http请求,它工作正常。我要求数据和大量的html回来。我想从该页面检索所有网址并列出它们。举个简单的第一次测试我使它看起来像这样:从java中的网页检索URL

int b = line.indexOf("http://",lastE); 
int e = line.indexOf("\"", b); 

这工作,但你可以想像这是可怕的,只有在80%的病例的作品。唯一的选择我可以想出自己听起来缓慢和愚蠢。所以我的问题是相当mutch我该从

String html 

List<Url> 

+0

同一问题在这里:http://stackoverflow.com/questions/2717760/finding-links-on-a-webpage-with-java – palacsint

回答

1

 
Pattern p = Pattern.compile("http://[\w^\"]++"); 
Matcher m = p.matcher(yourFetchedHtmlString); 
while (m.find()) { 
    nextUrl=m.group();//Do whatever you want with it 
} 

你也可能需要调整的正则表达式,正如我刚才写它未经测试。这应该是一个非常快速的方式来获取网址。

+0

这给了我无效的转义序列例外 – TFennis

1

我会尝试像HTML Parser这样的库来解析html字符串,并从中提取所有url标记。

+0

去检查出 – TFennis

0

你的想法很好,你只是缺少一些零件。

Yous应该为url添加一些已知的扩展名。 像.html.aspx.php.htm.cgi.js.pl.asp

,如果你喜欢的图像太再加入.gif.jpg.png

我认为你做的最好的只需要添加更多的扩展检查。

如果您可以发布完整的方法代码,我将很乐意帮助您使其更好。

+0

问题是,很多链接不结束如index.php的扩展?page = here – TFennis