2

spookyjs でサイトからデータをスクレイピングしてmongoDBに保存しようとしています。ウェブサイトからデータを取得できます。しかし、スクレイピングされたデータを spookyjs 環境から mongoDB に保存することはできません。スクレイピングされたデータを保存するには、データベース モデル インスタンスをspookyjs .以下のリンクを参照しました。

https://github.com/SpookyJS/SpookyJS/wiki/はじめに

以下は、prod_link_info 変数でデータを抽出し、その値を mongoDB に渡すコードです。

   var product_model = require('./product').product_model;

     //get results
       spooky.then([{product_model:product_model},function(){
                this.waitForSelector('li[id^="product_"]', function() {
                   //  Get info on all elements matching this CSS selector
                    var prod_link_info = this.evaluate(function() {
                        var nodes = document.querySelectorAll('li[id^="product_"]');

                        return [].map.call(nodes, function(node) { // Alternatively: return Array.prototype.map.call(...
                            return node.querySelector('a').getAttribute('href')+"\n";
                        });
                    });

            //insert values in mongodb
            for (var i = 0; i < prod_link_info.length; i++) {
                product_model.create(
                    {
                        prod_link_info:prod_link_info[i],
                    }, function(err, product){
                        if(err) console.log(err);
                        else console.log(product);
                    });
            } });
    }]);

以下は、上記のコードで使用されるデータベース スキーマとモデルのコードです。

var mongoose=require('mongoose');
var Schema = mongoose.Schema;
// create a schema
var productSchema = new Schema({
    prod_link_info: String,

});

var product_model= mongoose.model('product_model', productSchema);

module.exports = {
    product_model: product_model
}

しかし、上記のコードを実行すると、次のエラーが表示されますReferenceError: Can't find variable: product_model

spookyjs から抽出したデータを mongoDB に保存したいのですが、どこが間違っているのか教えてください。

4

1 に答える 1