2011-03-07 83 views
0

我的要求是動態地從網頁中提取所有鏈接(使用「a href」)。我正在使用JSP。更具體地說,我正在JSP中構建一個元搜索引擎。所以當用戶輸入查詢條目時,我必須從雅虎的搜索結果頁面中提取鏈接,請求,谷歌,媽媽等。 爲了獲得字符串格式的頁面,我現在使用的代碼是。如何使用jsp從網頁中提取鏈接?

> > try 
{ 
> String sUrl_yahoo = "http://www.mamma.com/result.php?type=web&q=hai+bird&j_q=&l="; 
> 
>  String nextLine; 
>  String webPage; 
>  StringBuffer wPage; 
>  String sSql; 
>  java.net.URL siteURL = new java.net.URL (sUrl_yahoo); 
>  java.net.URLConnection siteConn = siteURL.openConnection(); 
>  java.io.BufferedReader in = new java.io.BufferedReader (new java.io.InputStreamReader(siteConn.getInputStream())); 
>   wPage = new StringBuffer(30*1024); 
>   while ((nextLine = in.readLine()) != null) { 
> wPage.append(nextLine); } 
>   in.close(); 
>   webPage = wPage.toString();  out.println(webPage);  } 
> catch(Exception e) { 
> out.println("Error" + e); } 

現在,我的要求是:你能否提出一些方法來從字符串網頁中提取鏈接? 或者還有其他方法來提取這些鏈接?我寧願不使用任何外部軟件包。

+1

*我寧願不使用任何外部軟件包。*甚至不是Jsoup? Jsoup非常容易。示例:http://stackoverflow.com/questions/3394298/full-link-extraction-using-java/3400017#3400017 – BalusC 2011-03-07 17:36:52

回答

1

一個快速的解決辦法是使用正則表達式匹配器對象拉網址出來:

Pattern p = Pattern.compile("<a +href=\"([a-zA-z0-9\\:\\-\\/\\.]+)\">"); 
Matcher m = p.matcher(webPage); 

ArrayList<String> foundUrls = new ArrayList<String>(); 

while(m.find()) { 
    foundUrls.add(m.group(1)); 
} 

您可能需要玩的URL模式一點點,使其更加密不透風,但是這是一個快速和骯髒的解決方案,無需使用外部庫

相關問題