Javascript 来自PhantomJS的HTTP请求?

Javascript 来自PhantomJS的HTTP请求?,javascript,phantomjs,Javascript,Phantomjs,在我的phantomJS脚本中,在使用phantomJS抓取HTML内容之前,我想发出一些HTTP请求,在phantomJS中设置一些变量 从PhantomJS执行HTTP请求的正确方法是什么? 我应该使用PageObject并像处理网页一样处理它吗? 或者是否有一些XHR功能可以用于此? 我想先获取一些JSON数据。 < p>您有几个不同的选项要考虑。实现这一点最简单的方法是使用WebPage模块,打开包含要加载的数据的页面URL,然后开始使用其他WebPage对象删除其他页面 var web

在我的phantomJS脚本中,在使用phantomJS抓取HTML内容之前,我想发出一些HTTP请求,在phantomJS中设置一些变量

从PhantomJS执行HTTP请求的正确方法是什么? 我应该使用PageObject并像处理网页一样处理它吗? 或者是否有一些XHR功能可以用于此?
我想先获取一些JSON数据。

< p>您有几个不同的选项要考虑。实现这一点最简单的方法是使用WebPage模块,打开包含要加载的数据的页面URL,然后开始使用其他WebPage对象删除其他页面

var webpage = require('webpage');
var page = webpage.create()
page.open('<some url>', function(status) {
  var option1 = page.evaluate(function() { ... });
  var option2 = page.evaluate(function() { ... });

  another = webpage.create();
  another.open('<another url>', function(status) {
    another.evaluate(function(opt1, opt2) {

      // you have access to opt1 and opt2 here

    }, option1, option2);
  });
  page.close();
});
var webpage=require('webpage');
var page=webpage.create()
第页打开(“”,功能(状态){
var option1=page.evaluate(函数(){…});
var option2=page.evaluate(函数(){…});
另一个=webpage.create();
另一个。打开(“”,功能(状态){
另一个。评估(功能(opt1,opt2){
//您可以在此访问opt1和opt2
},选项1,选项2);
});
page.close();
});
然后您可以访问“另一个”页面中的option1和option2变量

另一个选项是使用上面提到的命令行参数。您甚至可以编写PhantomJS代码来接受变量的命令行参数,编写Node.js/Python/Ruby脚本来发出web请求,解析它,并使用正确的命令行参数生成PhantomJS进程


两个都可以工作,但是如果你想把你的代码保存在一个文件中,我会走第一条路线。

你也可以考虑把参数传递到幻像脚本中作为命令行参数。我正在从一个Web服务器中生成脚本,并通过命令行传递参数,但是,我需要在脚本运行时向控制服务器发送频繁的更新。使用网页对象是超重量级的,更是如此,因为我使用的是比Phantom更瘦的东西(这是这个任务的一个要求)。因为我不能使用节点http模块,所以可能有一个独立的http模块可以使用。或者可能是curl?我在中没有看到任何可以用来生成命令和缓冲区输出的东西(您需要运行像curl这样的Linux命令)。我认为使用网页对象来实现这一点可能是你在这里的唯一选择。我也没有找到任何东西,所以我使用了网页对象。这很奇怪,因为在Phantom文档中甚至有一个称为进程间通信的部分,它建议使用发送到外部服务器的http请求:不幸的是,它们没有给出任何具体的示例。谢谢你的关注。也许我会加入一个功能请求。查看他们的示例,似乎发送http请求的唯一方法是使用page.open-这里有一个post请求的示例:-您可以将请求类型作为第二个参数传递这是迄今为止我发现的最简单的方法。我还尝试在页面中使用XMLHttpRequest,但这非常棘手。谢谢