Rav*_*shi 3 html javascript java
我正在尝试解析包含一些 JS 的网页。到目前为止,我正在使用JsoupJava 解析 html,它按预期工作。但我无法解析 JavaScript。以下是 HTML 页面的片段-
<script type="text/javascript">
var element = document.createElement("input");
element.setAttribute("type", "hidden");
element.setAttribute("value", "");
element.setAttribute("name", "AzPwXPs");
element.setAttribute("id", "AzPwXPs");
var foo = document.getElementById("dnipb");
foo.appendChild(element);
var element1 = document.createElement("input");
element1.setAttribute("type", "hidden");
element1.setAttribute("value", "6D6AB8AECC9B28235F1DE39D879537E1");
element1.setAttribute("name", "ZLZWNK");
element1.setAttribute("id", "ZLZWNK");
foo.appendChild(element1);
</script>
Run Code Online (Sandbox Code Playgroud)
我想用name/读取这两个值id。以便在解析后我可以得到以下结果-
AzPwXPs=
ZLZWNK=6D6AB8AECC9B28235F1DE39D879537E1
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何解析?
在搜索使用 JavaScript 解析页面的解决方案时,我曾多次偶然发现这个问题,但提供的解决方案并不完美。通过使用JBrowserDriver和JSoup来解析 JavaScript 操作的页面,我找到了解决该问题的纯 Java 解决方案。
简单的例子:
// JBrowserDriver part
JBrowserDriver driver = new JBrowserDriver(Settings
.builder().
timezone(Timezone.EUROPE_ATHENS).build());
driver.get(FETCH_URL);
String loadedPage = driver.getPageSource();
// JSoup parsing part
Document document = Jsoup.parse(loadedPage);
Elements elements = document.select("#nav-console span.data");
log.info("Found element count: {}", elements.size());
driver.quit();
Run Code Online (Sandbox Code Playgroud)