使用 PhantomJS 获取原始页面内容
Get the raw page content with PhantomJS
是否可以在执行任何 javascript 之前使用 PhantomJS 从网页获取原始 html。
以下脚本在加载并执行所有脚本后返回 html。
var webPage = require('webpage');
var page = webPage.create();
page.open('http://whosebug.com', function (status) {
var content = page.content;
console.log('Content: ' + content);
phantom.exit();
});
有没有办法访问页面的初始源?
DOMContentLoaded 是页面加载时触发的最早事件,但在您的情况下似乎已经太晚了,因为 JavaScript 可以在 [=26= 之前执行]ContentLoaded 被触发(认为 <script>doSomething();</script>
)。
下一个想法是 运行 setInterval(check, 5);
其中 check
尝试确定初始 HTML 是否已完全加载,但这并没有 gua运行tee 没有其他 JavaScript 已经 运行 并且无法检测页面是否已加载,因为 page.content
总是包含 </body></html>
.
显而易见的解决方案是使用 page.settings.javascriptEnabled = false;
完全禁用 JavaScript,但如果这样做,您将无法再访问 DOM。访问它的唯一方法是通过 page.content
或类似的属性。
如果您只需要页面源代码,请不要为此使用 PhantomJS。有很多解决方案,例如 cURL。
可以通过 page.plainText:
var page=require('webpage').create();
page.onLoadFinished=function(status) {
if(status=='success') {
console.log(page.plainText);
}
}
page.load('http://whosebug.com');
是否可以在执行任何 javascript 之前使用 PhantomJS 从网页获取原始 html。
以下脚本在加载并执行所有脚本后返回 html。
var webPage = require('webpage');
var page = webPage.create();
page.open('http://whosebug.com', function (status) {
var content = page.content;
console.log('Content: ' + content);
phantom.exit();
});
有没有办法访问页面的初始源?
DOMContentLoaded 是页面加载时触发的最早事件,但在您的情况下似乎已经太晚了,因为 JavaScript 可以在 [=26= 之前执行]ContentLoaded 被触发(认为 <script>doSomething();</script>
)。
下一个想法是 运行 setInterval(check, 5);
其中 check
尝试确定初始 HTML 是否已完全加载,但这并没有 gua运行tee 没有其他 JavaScript 已经 运行 并且无法检测页面是否已加载,因为 page.content
总是包含 </body></html>
.
显而易见的解决方案是使用 page.settings.javascriptEnabled = false;
完全禁用 JavaScript,但如果这样做,您将无法再访问 DOM。访问它的唯一方法是通过 page.content
或类似的属性。
如果您只需要页面源代码,请不要为此使用 PhantomJS。有很多解决方案,例如 cURL。
可以通过 page.plainText:
var page=require('webpage').create();
page.onLoadFinished=function(status) {
if(status=='success') {
console.log(page.plainText);
}
}
page.load('http://whosebug.com');