gpt4 book ai didi

Android - 如何使用 Webview 中的 evaluateJavascript 获取纯 HTML? JSOUP 无法解析结果 HTML

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:09 26 4
gpt4 key购买 nike

我正在使用下面的代码获取 HTML,但我没有获取纯 HTML,它包含非转义字符。我正在使用无法解析此 HTML 的 JSOUP 解析器。

webview.evaluateJavascript(
"(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
new ValueCallback<String>() {
@Override
public void onReceiveValue(String html) {
}
});

我从上面的代码中得到这个 html 字符串。

"\u003Chtml>\u003Chead>\n    \u003Cmeta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \u003Clink rel=\"shortcut icon\" href=\"https://www.xyx.com/favicon.ico\" type=\"image/x-icon\">\n    \u003Clink rel=\"icon\" href=\"https://www.xyx.com/favicon.ico\" type=\"image/x-icon\">\n    \n    \u003Ctitle>Page Not Found! : BJSBuzz\u003C/title>\n\n    \u003C!-- \n\tOpen Source Social Network (Ossn)/script>\u003C/body>\u003C/html>"

最佳答案

您应该使用 JsonReader 来解析值:

webView.evaluateJavascript("(function() {return document.getElementsByTagName('html')[0].outerHTML;})();", new ValueCallback<String>() {
@Override
public void onReceiveValue(final String value) {
JsonReader reader = new JsonReader(new StringReader(value));
reader.setLenient(true);
try {
if(reader.peek() == JsonToken.STRING) {
String domStr = reader.nextString();
if(domStr != null) {
handleResponseSuccessByBody(domStr);
}
}
} catch (IOException e) {
// handle exception
} finally {
IoUtil.close(reader);
}
}

});

关于Android - 如何使用 Webview 中的 evaluateJavascript 获取纯 HTML? JSOUP 无法解析结果 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45187561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com