我有一个使用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>
输出应为:
<!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>
顺便说一句,JSoup不包含表标记,因为它无法执行Javascript。我怎样才能做到这一点?
答案 0 :(得分:3)
第一种可能性
你在Jsoup之外有一些选择,即使用“真正的”浏览器并与之交互。一个很好的选择是selenium webdriver。使用selenium,您可以使用不同的浏览器作为后端,也许在您的情况下,非常轻量级的htmlUnit就可以了。如果调用更复杂的JavaScript,则通常没有其他选择来运行完整的浏览器。幸运的是,phantomjs就在那里,它的足迹并不太糟糕(无头和所有)。
第二种可能性
另一种方法可能是您使用JSoup获取javascript源并在Java中启动JavaScript解释器。为此,您可以使用Rhino。但是,如果你走那条路,你也可以直接使用HtmlUnit,这可能不那么笨重。