Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析包含Javascript的网页?_Java_Javascript_Html Parsing_Jsoup - Fatal编程技术网

如何解析包含Javascript的网页?

如何解析包含Javascript的网页?,java,javascript,html-parsing,jsoup,Java,Javascript,Html Parsing,Jsoup,我有一个使用Javascript创建表的网页。现在我在Java项目中使用JSoup来解析网页。顺便说一句,JSoup无法运行Javascript,因此无法生成表,网页的源代码也不完整。 如何包含该脚本创建的HTML代码,以便使用JSoup解析其内容?你能举个简单的例子吗?谢谢大家! 网页示例: <!doctype html> <html> <head> <title>A blank HTML5 page</title>

我有一个使用Javascript创建表的网页。现在我在Java项目中使用JSoup来解析网页。顺便说一句,JSoup无法运行Javascript,因此无法生成表,网页的源代码也不完整。 如何包含该脚本创建的HTML代码,以便使用JSoup解析其内容?你能举个简单的例子吗?谢谢大家!

网页示例:

<!doctype html>
<html>
  <head>
    <title>A blank HTML5 page</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script>
        var table = document.createElement("table");
        var tr = document.createElement("tr");
        table.appendChild(tr);
        document.body.appendChild(table);
    </script>
    <p>First paragraph</p>
  </body>
</html>

一个空白的HTML5页面
var table=document.createElement(“表”);
var tr=document.createElement(“tr”);
表1.儿童(tr);
document.body.appendChild(表);
第一段

输出应为:

<!DOCTYPE html>
<html>
    <head>
        <title>
            A blank HTML5 page
        </title>
        <meta charset="utf-8"></meta>
    </head>
    <body>
        <script>
            var table = document.createElement("table");
            var tr = document.createElement("tr");
            table.appendChild(tr);
            document.body.appendChild(table);   
        </script>
        <table>
            <tr></tr>
        </table>
        <p>
            First paragraph
        </p>
    </body>
</html>

一个空白的HTML5页面
var table=document.createElement(“表”);
var tr=document.createElement(“tr”);
表1.儿童(tr);
document.body.appendChild(表);

第一段


顺便说一句,JSoup不包括table标记,因为它不能执行Javascript。我怎样才能做到这一点呢?

第一种可能性

您在Jsoup之外有一些选项,即使用“真实”浏览器并与之交互。这是一个很好的选择。使用selenium,您可以使用不同的浏览器作为后端,在您的情况下,非常轻量级的浏览器可能已经可以了。如果调用更复杂的JavaScript,通常没有其他选择,只能运行完整的浏览器。幸运的是,它的足迹并不太差(无头和所有)

第二种可能性


另一种方法是使用JSoup获取javascript源代码,并在Java中启动javascript解释器。你可以用这个。但是,如果您选择这种方式,您也可以直接使用HtmlUnit,这可能有点笨重。

您最好尝试与Javascript用于填充表的AJAX服务接口。@chrylis我想现在有了AJAX服务@克劳迪奥桑托斯:这不是一个重复的问题,因为他们在问如何从脚本中获取值。我想解析该脚本的HTML输出,它是不同的@安杰洛:我相信这个答案会对你有所帮助。这不是重复的问题,因为他问的是另一个不同的问题。答案中没有我想要的,因为他想从静态脚本中提取信息。我想解析由该脚本生成的html(这是不同的!)。Rhino可能会有所帮助,但文档似乎没有解释有关Javascript计算和解析的内容