0

私の要件は、Web ページからすべてのリンク (「a href」を使用) を動的に抽出することです。 私はJSPを使用しています。具体的には、JSP でメタ検索エンジンを構築しています。したがって、ユーザーがクエリ項目を入力すると、yahoo、ask、google、momma などの検索結果ページからリンクを抽出する必要があります。ページを文字列形式で取得するために、現在使用しているコードは次のとおりです。

> > 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);   }

今、私の要求は: String webPage からリンクを抽出する方法を提案できますか? または、これらのリンクを抽出する他の方法はありますか? 外部パッケージを使用せずに行うことをお勧めします。

4

1 に答える 1

1

簡単な解決策の 1 つは、正規表現の Matcher オブジェクトを使用して URL を抽出することです。

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 パターンを少し変更して気密性を高める必要があるかもしれませんが、これは外部ライブラリを使用しない手っ取り早い解決策です。

于 2011-03-07T19:00:07.440 に答える