java - 如何在没有第三方库的情况下完全解析 HTML?

标签 java html ajax parsing load

我对这个问题很困惑。

我可以像下面这样解析 HTML。

package org.owls.parser.html;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HTMLParser {
    public static String getHTTPStringsFromWeb(String urlStr) throws Exception {
        StringBuffer sb = new StringBuffer();
        URL url = new URL(urlStr);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();

        BufferedReader br = null;
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK)
        {
            br = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String line = "";
            while((line = br.readLine()) != null){
                sb.append(line);
            }
            br.close();
        }
        return sb.toString();
    }
}

这段代码运行良好,但是有一个问题。此代码无法获取由 ajax 结果构成的动态数据。

所以我想获得整页。是否可以?

人们谈论 jsoup,但我想知道是否可以通过 native 获得它。

谢谢:D

最佳答案

您尝试执行的操作存在固有问题,您需要一个 Web 浏览器/环境来执行 ajax 请求。将它们读入字符串并查找 url 是不够的,这些函数可能正在对您无法支持的数据做一些特殊的事情。

你将不得不使用像 phantomjs 这样的东西,它可以在 headless 环境中加载和解析页面

关于java - 如何在没有第三方库的情况下完全解析 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29647354/

相关文章:

java - 如何在 Spring Boot jdbc 存储库中存储和读取属性或 yml 文件中的 SQL 查询?

java - 在构造函数中初始化值之前检查条件

javascript - 获取 Base64 编码图像并使用 ExpressJS 将其作为图像发送

javascript - jQuery 使用类调用 td

jquery - 从表单发布数据而不知道表单有多长

javascript - 获取json编码形式的信息

javascript - 如何为 JQuery $.ajax 同步请求设置超时并执行某些操作

java - jdbc如何截断数值?

html - 所有页面和元素样式上的 rgba

java - 断言错误问题