2017-09-07 15 views
0

ベースURLと動的ルートを持つサイトからデータを削り取ろうとしています。この特定のサイトは、単に数字を使用していますので、私は、データを取得するには、このコードを持っている:npm cheerio and requestを使った動的Webページのスクレイピング

for (var i = 1; i <= total; i++) { 
 
    var temp = base_url + i; 
 
    var result = ""; 
 
    request(temp, function(error, response, body) { 
 
    var $ = cheerio.load(body); 
 
    var address_string = 'http://maps.google.com/?q=' + $('title').text(); 
 
    //firebase 
 
    database.ref('events/' + i).set({ 
 
     "address": address_string 
 
    }); 
 
    }); 
 
}

しかし、上記のコードは動作しません。また、データベースには何も追加しません。誰が何が間違っているのか分かりますか?

答えて

0

理由はわかりませんが、あなたが書いたコードでは、変数iがリクエストのコールバックスコープにバインドされておらず、forループがコールバックの前に終了するということがあります。が呼び出されます。

これが問題の場合は、i === totalに対して1つのdbエントリしか存在しません。

これは代わりにArray.forEachを実行することで解決できます。

関連する問題