我如何在没有第三方库的情况下完全解析 HTML?
How can I full parsing HTML without third party library?
这个问题我很疑惑
我可以像下面这样解析 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
您尝试执行的操作存在固有问题,您需要一个网络 browser/environment 来执行 ajax 请求。将它们读入一个字符串并寻找 url 是不够的,这些函数可能正在对您无法支持的数据做一些特殊的事情。
您将不得不使用类似 phantomjs 的东西,它可以在无头环境中加载和解析页面
这个问题我很疑惑
我可以像下面这样解析 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
您尝试执行的操作存在固有问题,您需要一个网络 browser/environment 来执行 ajax 请求。将它们读入一个字符串并寻找 url 是不够的,这些函数可能正在对您无法支持的数据做一些特殊的事情。
您将不得不使用类似 phantomjs 的东西,它可以在无头环境中加载和解析页面