使用PhantomJS从网站读取javascript变量

使用PhantomJS从网站读取javascript变量,javascript,variables,phantomjs,Javascript,Variables,Phantomjs,我不熟悉Javascript和PhantomJS,但我看似简单的目标已被证明比预期更难实现。我想编写一个脚本,加载一个网站,然后输出该页面上使用的Javascript变量的值。如果我在浏览器中打开该页面并打开Javascript控制台,我可以输入变量名,它会告诉我与该变量关联的值。我只是想用PhantomJS复制这个函数,这样我就可以自动完成这个任务了 有人能给我指出这方面的正确文档吗?假设PhantomJS是正确的方法,我还没有找到如何做这样的事情。也许有更简单的选择 谢谢。您需要了解的是,p

我不熟悉Javascript和PhantomJS,但我看似简单的目标已被证明比预期更难实现。我想编写一个脚本,加载一个网站,然后输出该页面上使用的Javascript变量的值。如果我在浏览器中打开该页面并打开Javascript控制台,我可以输入变量名,它会告诉我与该变量关联的值。我只是想用PhantomJS复制这个函数,这样我就可以自动完成这个任务了

有人能给我指出这方面的正确文档吗?假设PhantomJS是正确的方法,我还没有找到如何做这样的事情。也许有更简单的选择


谢谢。

您需要了解的是,phantomJS有两个JavaScript环境,这两个环境相互独立。内部是文档脚本(在任何浏览器中都有)。外部的一个是控制phantomJS应该做什么。它模拟用户

因此,在某种意义上,您需要告诉phantomJS“用户打开JavaScript控制台时键入了
”。政府是这样做的

因此,要读取变量
foo
的值,请编写以下代码:

var foo = page.evaluate(function() {
    return document.foo;
});

注意:
文档并非绝对必要,但它有助于让开发人员将这两个环境分开。

Aaron的回答对我不起作用。也许它在2013年是有效的,但现在(2016年),它不再适用于当前版本。在Aaron的示例中,
foo
返回一个承诺,而不是值
console.log(foo)
outputs
Promise{}

以下是我得出的结论:

page
    .evaluate( function(){ return window.foo })
    .then ( function(foo){ console.log "foo = ", foo});

现在你真的了解了foo的价值。

以下其中一项可能会对你有所帮助:或者我能让它发挥作用,我不知道你能在“另一边”评估全局变量,真是太棒了!在整个过程中,我都是将信息打印到屏幕上的表格上,然后对表格进行物理评估以获取信息,这是非常高效的!