Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取html页面内容并在JSP中解析内容_Java_Jsp_Netbeans_Java Server - Fatal编程技术网

Java 读取html页面内容并在JSP中解析内容

Java 读取html页面内容并在JSP中解析内容,java,jsp,netbeans,java-server,Java,Jsp,Netbeans,Java Server,在这个Java web应用程序项目中,我首先尝试使用getUrlContentString方法读取页面内容,然后使用方法proccessString只显示标记之间的内容。第二个方法似乎没有像预期的那样响应,它返回一个空白页。是什么导致了问题 index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head>

在这个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,而不是您在浏览器控制台中看到的url 窗口,但未执行脚本的窗口不执行 包含锚定标记。这就是为什么你不能得到这个的任何内容 标签以这个URL为例:-而不是 你的

其次,您尝试以这种方式匹配标记: . 认识并不难 有了它,它为html提供了非常好的机会 解析。例如,是一本从标记中提取信息的食谱。