因此,我尝试在 ESPN 梦幻足球的 HTML lite 选秀页面中编写一个钩子,以交叉引用球员排名列表(来自 CSV 文件),以从可用池中消除已经选秀的球员。过去我亲手完成了这项工作:但在最后几轮的选秀中,有 16 支球队的选秀,几乎不可能跟上,因为那时没有人真正知道球员是谁。
我是 Javascript 和 PhantomJS 的新手,所以请不要笑。
此时,当 AJAX 轮询 PhantomJS 实例时,我可以在控制台中看到 page.onResourceReceived 元数据。但我不知道如何访问“浏览器”实际接收的数据。根据 Chrome 的检查员的说法,Network Inspector 选项卡下的“预览”选项卡——无论是时间同步信号还是被选中的实际球员的数据都以 JSON 格式发送到浏览器。
长话短说,当我收到 page.onResourceReceived 元数据时,如何获取实际的 JSON 数据?
(PS 我知道我注释掉了 phantom.exit(); 这是为了防止脚本在重定向和 onLoad 完成后终止——我需要让它继续运行以监听草稿更新)
var draft = 'http://games.espn.go.com/ffl/htmldraft?leagueId=1246633&teamId=8&fromTeamId=8';
var draftURL = encodeURIComponent(draft);
var page = require('webpage').create(),
server = 'https://r.espn.go.com/espn/memberservices/pc/login',
data = 'SUBMIT=1&failedLocation=&aff_code=espn_fantgames&appRedirect=' + draftURL + '&cookieDomain=.go.com&multipleDomains=true&username=[redacted]&password=[redacted]&submit=Sign+In';
page.onResourceReceived = function (response) {
console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
};
page.open(server, 'post', data, function (status) {
if (status !== 'success') {
console.log('Unable to post!');
} else {
page.render('example.png');
//console.log(page.content)
}
//phantom.exit();
});