javascript - 来自 PhantomJS 的 HTTP 请求?

标签 javascript phantomjs

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

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

最佳答案

您有几个不同的选择要考虑。完成此操作的最简单方法是使用 WebPage 模块,打开包含您要加载的数据的页面的 URL,然后使用其他网页对象抓取其他页面。

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();
});

然后您可以访问“另一个”页面中的 option1 和 option2 变量。

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

两者都可以,但如果您想将代码保存在一个文件中,我会采用第一种方式。

关于javascript - 来自 PhantomJS 的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18652559/

相关文章:

用于匹配以给定模式开头的代码块的 Javascript 正则表达式

javascript - Gmail 和 Google Chrome 12+ 中的“从剪贴板粘贴图像”功能如何工作?

javascript - 加载新页面时快速重定向选项卡的方法

javascript - 使用 PhantomJS 渲染图形并拍摄快照

selenium - 是否可以使用 Selenium WebDriver 来驱动 PhantomJS?

javascript - 有没有办法改变已经打开的浏览器窗口的大小(或允许某些网站使用 window.resizeTo)

javascript - Fabric.js 的撤消重做

javascript - 有没有办法用 CasperJS 截取新遗物的仪表板屏幕截图?

ruby-on-rails - Poltergeist/PhantomJS 在 Gitlab CI 中崩溃

r - Phantomjs 错误阻止导出 gtsummary 表以在 RMarkdown 中使用