2017-07-16 15 views
0

私は現在、ウェブクロールにcasperjsを使用しています。ほとんどすべてが良いですが、私はいくつかの問題に直面しました。まず、私のコードは以下のようになります。casperjs evaluate関数が無効な値を返します

casper.start().each(SOME_URLS, function(self, URL) { 
    self.thenOpen(URL, function() { 

     self.then(function() { 
      var getDatas = function() { 
       var title = $('SOME_SELECTOR').map(function() { 
        return $(this).text(); 
       }).get(); 

       return { 
        title: title 
       }; 
      } 

      data = self.evaluate(getDatas); 
      console.log(JSON.stringify(data)); 
     }); 

    }); 
}).run(); 

ウェブページからデータを「データ」変数に取得したいとします。時にはデータが完全に良い(console.log上)場合もありますが、データが空であることもあります。

なぜこれが起こっていますか?何が間違っていたのですか?

+0

の内側にあなたのループを配置それをロードする。それが問題だろうか?また、データへの割り当てが間違った順序で実行されている可能性がありますので、別のcasper.then()に入れてみてください。また、人々が答えを見つけるのを助けるために働くものではなく、作用しないウェブサイトへのリンクを提供してください。 –

答えて

0

問題は、casper.startを複数回呼び出すことができないという問題です。あなたのループはcasper.start機能の内部または内部にある必要がありますcasper.then

これを参照するには、excellent SO answerを参照してください。

基本的に一度だけcasper.startを呼び出して、あなたのキャスパーのユーザーエージェントにそれを追加しない場合は、jQueryのを使用しているものは何でもウェブサイトあなたはスクレーピングしているという保証はありませんように見えますcasper.then

関連する問題