2016-09-27 11 views
8

は、私はローカルで実行するときに機能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

なぜこのURLにリクエストしないのですか?https://fantasy.premierleague.com/drf/bootstrap-static?私はphantomjsの利点を見ません、実際にそれは自動的にAPIを要求し、データを取得します。 – num8er

+1

うわー...本当にありがとう! –

+1

**どのPhantomJSバージョン**を使用していますか? 'onConsoleMessage'、' onError'、 'onResourceError'、' onResourceTimeout'イベント([Example](https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file-1_phantomerrors-js))に登録してください。多分エラーがあるかもしれません。 –

答えて

-3

私はupvoteのために意図していません。 URLを要求することによって直接処理できるデータを取得するために、phantomjsでブラウザの動作をシミュレートせずに、いくつかの状況を解決するソリューションを提供しています。

ページからのデータを必要とし、その理由だけでこのURLへのリクエストをしない:私はこの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

+1

要求パッケージはnode.js用に書かれており、PhantomJSでは動作しません。あなたはOPを手伝ったかもしれませんが、あなたはまだ質問に答えていません。 –

+0

親愛なる@ArtjomB!私はフィールが必要とする解決策に答えています。そして、彼はただ別のサイトからデータを取得する必要があります。だからこそ私は、jsonとしてすべてのデータを返す直接URLがあるときには、phantomjsを必要としないと言っています。 SOは、私たちが問題を解決するのに役立つ場所です。そして私の解決策は、データの解析の問題を解決しました。私はあなたが賢明だと思っていますので、他の人の答えを落としたりコメントしたりするだけでなく、解答して答えてください。高貴な人たちのやり方ではありません。 – num8er

+2

PhantomJSを使い、* "ReferenceError:変数を見つけることができません:$" *の人に役立つことは、まだありません。この質問には、あなたの議論をサポートするための1つの単語は含まれておらず、OPはページから何かJSONをダウンロードしたいだけで、それ以外は何もダウンロードしませんでした。投票は品質管理の一形態です。あなたの答えはそれだけでは問題ありませんが、尋ねられた質問とは何の関係もなく、今後の読者には最低限の欲求を与えたいと思います。私はこれを非常に高貴に感じる。 @ArtjomB。 –

1

あなたのコードとjQueryページにロードされている間の競合状態があるかもしれません。 page.evaluateコールバック内のステートメントを$(document).ready(function() { /* your statements here */ });で囲み、ページ上のスクリプトが完全に読み込まれていることを確認します。

+0

DOMは 'page.open'コールバックが呼び出されたときに準備が整いました。また' $ 'は[' page.evaluate']の中で*のみ*アクセス可能です。http://phantomjs.org/api /webpage/method/evaluate.html)。'page.evaluate'の外側で' $ 'を使うことはできません。 –

+0

あなたは$(document)を使うことはできません。 jQueryがまだロードされていない場合 – Fer

関連する問題