[英]Reading an html page content and parsing the content in JSP
在这个Java Web应用程序项目中,我首先尝试使用getUrlContentString()
方法(似乎正在工作)读取页面的内容,其次,仅使用proccessString ()
方法显示标签之间的内容。 第二种方法似乎没有按预期方式响应,它返回空白页。 是什么原因引起的?
的index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%= cookiePac.CookieJar.getUrlContentString("http://help.websiteos.com/"
+ "websiteos/example_of_a_simple_html_page.htm")%>
<p>
<%= cookiePac.CookieJar.proccessString()%>
</p>
</body>
</html>
CookieJar.java
package cookiePac;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CookieJar {
private final List<String> cookies;
private static String rawCookiesString = "";
private static String rawCookiesString_1 = "";
public CookieJar () {
this.cookies = new ArrayList<>();
}
/* read the page, store into rawCookiesString */
public static String getUrlContentString (String theUrl) {
StringBuilder content = new StringBuilder();
try {
URL url = new URL(theUrl);
URLConnection urlConnection = url.openConnection();
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
content.append(line + "\n");
}
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
rawCookiesString = content.toString();
return " ";
}
/* select the content between <a> */
public static String proccessString () {
Pattern p = Pattern.compile("<a>(.*?)</a>");
Matcher m = p.matcher(rawCookiesString);
if (m.find()) {
rawCookiesString_1 = m.group(1);
}
return rawCookiesString_1.toString();
}
}
我已经用您的代码创建了一个项目。 我在那里看到了一些问题。 他们来了。
首先,您使用指定的URL获得的静态html(不是在浏览器控制台窗口中看到的html),而是未执行脚本的html,其中不包含定位标记。 这就是为什么您无法获得此标签的任何内容的原因。 以以下URL为例: http : //www.cssdesignawards.com/-而不是您的http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm 。
其次,您尝试以这种方式匹配标签: "<a>(.*?)</a>"
。 但是实际上,使用此正则表达式很难匹配任何锚标记内容,因为通常使用CSS类,因此增加匹配锚内容的机会的方法是使用"<a(.*?)</a>"
代替的"<a>(.*?)</a>"
。
getUrlContentString
方法以将html作为字符串返回,但是它始终仅返回空白字符串。 考虑重命名此方法或返回rawCookiesString
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.