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

发布于 2024-10-21 05:37:31 字数 1144 浏览 1 评论 0原文

我的要求是动态地从网页中提取所有链接(使用“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 中提取链接的方法吗? 或者还有其他方法来提取这些链接吗?我更愿意在不使用任何外部包的情况下完成此操作。

My requirement is to extract all links (using "a href") from a web page dynamically. I am using JSP. To be more specific, i am building a meta search engine in JSP. So when user enters a query item, i have to extract the links from the search results pages of yahoo, ask, google, momma etc.
For getting the pages in string format, the code i am using right now is.

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

Now, my request is: Can you suggest some way to extract the links from the String webPage ?
Or is there some other way to extract those links ? I would prefer doing it without using any external packages.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

打小就很酷 2024-10-28 05:37:31

一个快速的解决方案是使用正则表达式 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 模式以使其更加密封,但这是一种快速而肮脏的解决方案,无需使用外部库。

One quick solution would be to use a regex Matcher object to pull the URLs out:

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

You might have to play around with the URL pattern a little to make it more airtight, but this is a quick and dirty solution without using external libraries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文