Phantomjs:在将其打开为网页之前修改html dom

时间:2015-11-03 06:10:22

标签: javascript dom phantomjs

我需要处理已经损坏的脚本文件的html文件,这些脚本文件是通过标记添加到它的。 我打算通过phantomjs删除网页中的所有脚本标签。 但是在通过webpage.open()打开网页时,会抛出phantomjs解析错误,因为它无法解析脚本标记中的JS内容。 这是一个例子:

<html>
<head>
<script>
corrupted JS
if(dadadd
 ;
</script>
<body>
some content
</body>
</html>

有人可以帮我建议使用phantomjs清理此网页的正确方法吗?

1 个答案:

答案 0 :(得分:1)

这不是(轻松)可能。您可以下载(不是通过打开页面,而是在page.evaluate()中发出Ajax请求)静态html,然后根据您的需要进行更改,然后将其分配给page.content

这仍然可能无效,因为只要您将其分配给page.content,就会说PhantomJS应该将此来源解释为来自未知域的页面(about:blank)。由于页面源包含所有类型的没有域名的链接/脚本/样式表,因此您还必须更改这些页面,以便页面成功加载各种资源。

使用自定义规则在PhantomJS和互联网之间建立代理可能更容易,可根据需要调整页面来源。