java - 在Java中解析包含JS的HTML页面

标签 java javascript html

我正在尝试解析包含一些 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/

相关文章:

javascript - 当 iFrame 导入 JS 库时,浏览器实际上会再次导入该库吗?

ajax - Firefox 网站如何使其下载统计页面正常工作?

html - 导航不正确 float

internet-explorer - 您将如何在 IE 中为这种倾斜的 DIV 导航设置 CSS3 回退?

java - 如何向 JsonObject 添加新的字段/元素?

java - 为什么我的方法不能正确重绘?

java - Java 中 mouseListener 和 mouseMotionListener 的区别?

java - 我们如何在不使用任何内置函数的情况下在 Java 中找到 String 的长度? (甚至不是 charAt() 或 toCharArray() 或 length())

javascript - 为什么我的逻辑是错误的?复选框和直通

javascript - 渴望在 Rails 中为 AngularJS 加载 HTML/erb 模板