我有最基本的java代码来做一个http请求,它工作正常。我请求数据和大量的HTML回来。我想从该页面检索所有网址并列出它们。对于简单的第一次测试,我看起来像这样:
int b = line.indexOf("http://",lastE);
int e = line.indexOf("\"", b);
这样可行,但你可以想象它很可怕,只有80%的情况下才有效。唯一可以选择我自己的选择听起来很慢而且很愚蠢。所以我的问题很简单,我是从
开始的String html
到
List<Url>
答案 0 :(得分:1)
我会尝试像HTML Parser这样的库来解析html字符串并从中提取所有url标记。
答案 1 :(得分:1)
Pattern p = Pattern.compile("http://[\w^\"]++");
Matcher m = p.matcher(yourFetchedHtmlString);
while (m.find()) {
nextUrl=m.group();//Do whatever you want with it
}
您可能还需要调整正则表达式,因为我刚刚编写它而未经过测试。这应该是一种非常快速的获取网址的方法。
答案 2 :(得分:0)
你的想法很好,你只是遗漏了一些部分。
Yous应该为网址添加一些已知的扩展名。
例如.html
.aspx
.php
.htm
.cgi
.js
.pl
.asp
如果您也喜欢图片,请添加.gif
.jpg
.png
我认为你做得最好只需要添加更多扩展程序检查。
如果您可以发布完整的方法代码,我将很乐意帮助您改进它。