我正在尝试解析包含一些 JS 的网页。到目前为止,我正在使用 Jsoup
解析 Java 中的 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>
我想用它们的 name
/id
读取这两个值。这样在解析之后我可以获得以下结果-
AzPwXPs=
ZLZWNK=6D6AB8AECC9B28235F1DE39D879537E1
这种情况如何解析?
最佳答案
我在搜索使用 JavaScript 解析页面的解决方案时偶然发现了这个问题,但提供的解决方案并不完美。我通过使用 JBrowserDriver 找到了问题的纯 Java 解决方案。和 JSoup解析 JavaScript 操作的页面。
简单的例子:
// 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();
关于java - 在Java中解析包含JS的HTML页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16316691/