Как извлечь ссылки с веб-страницы с помощью jsp? - PullRequest
0 голосов
/ 07 марта 2011

Мое требование - динамически извлекать все ссылки (используя "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? Или есть какой-то другой способ извлечь эти ссылки? Я бы предпочел сделать это без использования каких-либо внешних пакетов.

1 Ответ

1 голос
/ 07 марта 2011

Одним из быстрых решений было бы использование объекта регулярного выражения 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-адреса, чтобы сделать его более герметичным, но этобыстрое и грязное решение без использования внешних библиотек.

...