有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript解析Java中包含JS的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

在这种情况下如何解析


共 (5) 个答案

  1. # 1 楼答案

    我已经在css文件中找到了相同的url

    将javascript放在一个字符串中,并应用正则表达式

    Pattern p = Pattern.compile("url\\(\\s*(['" + '"' + "]?+)(.*?)\\1\\s*\\)"); //expression
    Matcher m = p.matcher(content);
    while (m.find()) {
    String urlFound = m.group(); 
    }
    

    问候,, 雨果佩德罗萨

  2. # 2 楼答案

    在搜索用JavaScript解析页面的解决方案时,我曾几次偶然发现这个问题,但所提供的解决方案并不完美。通过使用JBrowserDriverJSoup解析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();
    
  3. # 3 楼答案

    一旦您从JSoup获得了<script>元素的文本内容,您就可以使用Caja JS parser解析JS,然后遍历解析树找到您要查找的内容

  4. # 4 楼答案

    您可以尝试使用查询库。用它容易多了