首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jsp从网页中提取链接?

问如何使用jsp从网页中提取链接?
EN

Stack Overflow用户
提问于 2011-03-07 17:19:32
回答 1查看 1.2K关注 0票数 0

我的要求是动态地从网页中提取所有链接(使用“href"),我使用的是JSP。具体来说,我正在JSP中构建一个元搜索引擎。因此,当用户输入一个查询项时,我必须从yahoo、ask、google、momma等的搜索结果页面中提取链接。为了获得字符串格式的页面,我现在使用的代码是。

代码语言:javascript
复制
> > 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);   }

现在,我的要求是:您能建议从字符串webPage中提取链接的方法吗?或者还有其他方法来提取这些链接呢?我更喜欢在不使用任何外部包的情况下这样做。

EN

回答 1

Stack Overflow用户

发布于 2011-03-07 19:00:07

一个快速的解决方案是使用regex Matcher对象来提取URL:

代码语言:javascript
复制
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模式来使其更加密闭,但这是一个快速而肮脏的解决方案,无需使用外部库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5222825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档