javascript - 使用 PhantomJS 获取原始页面内容

标签 javascript phantomjs view-source

是否可以在执行任何 javascript 之前使用 PhantomJS 从网页获取原始 html。

以下脚本在加载并执行所有脚本后返回 html。

var webPage = require('webpage');
var page = webPage.create();

page.open('http://stackoverflow.com', function (status) {
    var content = page.content;
    console.log('Content: ' + content);
    phantom.exit();
});

有没有办法访问页面的初始源?

最佳答案

DOMContentLoaded 是页面加载时触发的最早事件,但在您的情况下似乎已经太晚了,因为可以在触发 DOMContentLoaded 之前执行 JavaScript(想想 <script>doSomething();</script>)。

下一个想法是运行 setInterval(check, 5);其中 check尝试确定初始 HTML 是否已完全加载,但这并不能保证没有其他 JavaScript 已经运行并且无法检测页面是否已加载,因为 page.content始终包括 </body></html> .

显而易见的解决方案是使用 page.settings.javascriptEnabled = false; 完全禁用 JavaScript ,但如果这样做,您将无法再访问 DOM。访问它的唯一方法是通过 page.content或类似的属性。

如果您只需要页面源代码,请不要为此使用 PhantomJS。有很多解决方案,例如 cURL。

关于javascript - 使用 PhantomJS 获取原始页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345222/

相关文章:

javascript 语法和 jQuery 源代码

javascript - 在 Javascript/AngularJS 中设置嵌套属性

javascript - 将来自 AngularJS 应用程序的模块文件包含到 Karma 中的 RequireJS 配置文件中

java - 如何从网页下载Java小程序?

asp.net - 为什么我的 Webform 上的复选框对控制循环代码不可见?

php - 我应该选择 AJAX 和 JQuery 的复杂性和速度还是 GET 的简单性?

javascript - 如果输入为空,如何将状态重置为空?

windows - 在 Windows : How to do it correctly? 上安装 CasperJS

debugging - 无法使用 PhantomJS 远程调试器在断点处访问 casper 实例方法

google-chrome - 我可以在 Chrome 中为 'view-source' 设置主题吗?