2016-05-01 14 views
0

私の目標は、ウェブサイトのダイナミックなウェブコンテンツをダウンロードすることです。受信したコンテンツに対してjavascriptを実行する必要があります。私は現在、PhantomJS 2.1を使用していたコードは以下の通りです:PhantomJSでダイナミックWebコンテンツをダウンロードする際に問題が発生しました

var page = require('webpage').create(); 
var fs = require('fs'); 

page.open('https://sports.bovada.lv/soccer/premier-league', function() { 
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
     page.evaluate(); // Edit: this line is removed 
     page.close(); 
    }); 
}); 

page.onLoadFinished = function() { 
    console.log("Download finished"); 
    fs.write('test.html', page.content, 'w'); 
    phantom.exit(0); 
}; 

コードが「test.htmlという」として受け取ったページを保存しているが、それがでないよう、残念ながら、それは完全なページのコンテンツをロードしていませんウェブブラウザ。誰かが私を助けることができたら、私は感謝します。テストに使用

ウェブサイト:https://sports.bovada.lv/soccer/premier-league

+0

このサイトにはアクセスできません sports.bovada.lvが突然接続を終了しました。 ERR_CONNECTION_CLOSED – Vaviloff

+0

サイトにジオロケーション制限があることがあります。とにかく別のサイト、例えばhttp://www.foxsports.com/soccer/scores?competition=1を試してみてください。 – shen

+0

なぜ、 'page.onLoadFinished'と' page.open'のコールバックの両方を使用していますか?あなたは1つのページだけを開くと、それらは同等であるため、それらのうちの1つが必要です。また、達成しようとしている 'page.evaluate();は何ですか?さらに、古いバージョンのjQueryを読み込むと、ページが壊れる可能性があります。このページに付属のjQueryバージョンに頼ってください。 –

答えて

1

問題はyour'reがあまりにも早く終了することが考えられます。

page.onLoadFinished = function() { 
    console.log("Download finished"); 
    fs.write('test.html', page.content, 'w'); 
    setTimeout(function(){ 
     phantom.exit(0); 
    }, 1000); 
}; 
+0

あなたの提案に感謝しますが、残念ながらそれは私の問題を解決しませんでした。ページはまだ適切にダウンロードされません。 CURLで静的にダウンロードしたのと同じように表示されます。 – shen

関連する問題