2011-09-13 56 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