通过PhantomJs下载带有Knockout绑定的页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过PhantomJs下载带有Knockout绑定的页面相关的知识,希望对你有一定的参考价值。
我想用PhantomJs在Microsoft Virtual Academy上解析一个页面。例如this one。我可以加载它(请参阅result),但在下载的源代码中,我没有看到课程描述或其持续时间。
要下载我用过下一个方法的页面:https://gist.github.com/DotNetNerd/5635371。
public string Grab(string url)
{
var process = new System.Diagnostics.Process();
var startInfo = new System.Diagnostics.ProcessStartInfo
{
WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardOutput = true,
FileName = Config.PhantomJSPath,
Arguments = string.Format(""{0}\{1}" {2}", Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, "index.js", url)
};
process.StartInfo = startInfo;
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return output;
}
和指数Js
var page = require('webpage').create(),
system = require('system');
page.onLoadFinished = function() {
console.log(page.content);
phantom.exit();
};
page.open(system.args[1]);
我应该配置phantomjs等待绑定生效还是PhantomJs根本不支持它?
答案
最后,我决定在页面加载后等待5秒。它不能保证一切都会在这个时候加载,但对我有用。
Index.js已更新为:
var page = require('webpage').create(),
system = require('system');
page.onLoadFinished = function() {
setTimeout(function () {
console.log(page.content);
phantom.exit();
}, 5000);
};
page.open(system.args[1]);
以上是关于通过PhantomJs下载带有Knockout绑定的页面的主要内容,如果未能解决你的问题,请参考以下文章
JSON 的 Knockout foreach 数据绑定不返回任何值
强制 Durandal 页面中的 Knockout 组件在绑定之前等待 Ajax 调用