Phantomjs - ReferenceError:无法找到变量:$

时间:2016-09-27 02:03:31

标签: javascript jquery phantomjs

我有一个PhantomJS脚本,当我在本地运行它时(Mac),但是当我在Linux服务器上运行它时,它会返回以下错误:

ReferenceError: Can't find variable: $
https://fantasy.premierleague.com/a/statistics/value_form:5712 in global code

代码是:

var page = require('webpage').create();
var fs = require('fs');
var args = require('system').args;
page.settings.userAgent = 'SpecialAgent';

page.open('https://fantasy.premierleague.com/a/statistics/value_form', function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        var ua = page.evaluate(function () {
        var result ="";
        // ...
        return result;
    });    

    }
    phantom.exit();
});

2 个答案:

答案 0 :(得分:2)

您的代码和页面上加载的jQuery之间可能存在竞争条件。使用page.evaluate包含$(document).ready(function() { /* your statements here */ });回调中的语句,以确保页面上的脚本已完全加载。

答案 1 :(得分:-4)

我不打算upvote。 我正在提供解决方案来解决某些情况而不用使用phantomjs模拟浏览器行为只是为了检索可以通过请求url直接处理的数据。

您需要页面中的数据,为什么不直接请求此网址:https://fantasy.premierleague.com/drf/bootstrap-static

var request = require('request'); // install: npm i request
var fs = require('fs');
var args = require('system').args;

request.get({url: 'https://fantasy.premierleague.com/drf/bootstrap-static'}, function(err, response, body) {
  console.log(body);
});

我是如何找到这个网址的?
简单:

firebug inspect net