在我的 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/