JavaScript 至 Html
JavaScript to Html
给定一个包含 JavaScript 代码的网页,我想自动生成结果 html(通过 CLI 工具或使用某种语言的库)
例如,给定 test.html
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
</body>
</html>
我想得到结果
<html>
<body>
<p id="demo">Hello JavaScript!</p>
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
</body>
</html>
快速搜索后,watin 似乎可以满足您的要求。
它旨在自动化测试,但当它到达一个页面时,它会执行所有 js 以及 ajax 调用等。看起来你也可以从中获取结果 html。
答案基于@torazaburo
的评论
事实上,phantomjs 能够评估 javascript 并产生 html。
这是它的样子,执行 phantomjs load_page.js path_to/test.html
var page = require('webpage').create(),
system = require('system'),
page_address;
var fs = require('fs');
if (system.args.length === 1){
console.log('Usage: phantomjs ' + system.args[0] + ' <page_to_load:http://www.google.com>');
phantom.exit();
}
page_address = system.args[1]
page.open(page_address, function(status){
console.log('Status:' + status);
if (status === 'success' ){
fs.write('phantom_result.html', page.content, 'w')
}
phantom.exit();
});
给定一个包含 JavaScript 代码的网页,我想自动生成结果 html(通过 CLI 工具或使用某种语言的库)
例如,给定 test.html
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
</body>
</html>
我想得到结果
<html>
<body>
<p id="demo">Hello JavaScript!</p>
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
</body>
</html>
快速搜索后,watin 似乎可以满足您的要求。
它旨在自动化测试,但当它到达一个页面时,它会执行所有 js 以及 ajax 调用等。看起来你也可以从中获取结果 html。
答案基于@torazaburo
的评论事实上,phantomjs 能够评估 javascript 并产生 html。
这是它的样子,执行 phantomjs load_page.js path_to/test.html
var page = require('webpage').create(),
system = require('system'),
page_address;
var fs = require('fs');
if (system.args.length === 1){
console.log('Usage: phantomjs ' + system.args[0] + ' <page_to_load:http://www.google.com>');
phantom.exit();
}
page_address = system.args[1]
page.open(page_address, function(status){
console.log('Status:' + status);
if (status === 'success' ){
fs.write('phantom_result.html', page.content, 'w')
}
phantom.exit();
});