我有以下RequestURL.js
文件。
var webPage = require('webpage');
var system = require('system');
var page = webPage.create();
page.customHeaders = {"pragma": "akamai-x-feo-trace"};
page.settings.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"
if (system.args.length === 1) {
console.log('Try to pass some args when invoking this script!');
} else {
page.open(system.args[1], function (status) {
var content = page.content;
console.log(content);
phantom.exit();
});
}
现在我正在执行以下命令来获取HTML源代码(在页面上执行JS后生成HTML)。
phantomjs --ignore-ssl-errors=yes --ssl-protocol=any RequestURL.js #my_url_here > body.html
现在的问题是,如果页面上出现JS错误,则不会生成页面源代码。幻影中有没有办法基本上忽略任何错误并获得完整生成的页面源。
答案 0 :(得分:0)
如果JavaScript错误在某个地方,整个页面JavaScript的执行可以完全停止,如果页面是动态页面(例如单页面应用程序),则意味着页面源实际上是空的。 / p>
进一步的唯一方法是修复错误或防止错误代码执行。
例如:PhantomJS 1.x不支持Function.prototype.bind
。虽然CasperJS源中存在垫片,但它无法正常工作,因此正确的垫片必须为introduced。
JavaScript错误可以通过多种方式修复,但实时更改源代码并不是一种选择,因为PhantomJS事件不提供对请求内容的访问,而只提供对元数据的访问。如果通过XHR加载源,XHR proxy或实际代理可以提供帮助。
有时page.content
不显示页面来源,但它就在那里。在这些情况下,可以通过
page.evaluate(function(){
return document.documentElement.outerHTML;
});
更多选项是here。