1

サイトをクロールするために CasperJS を使用しています。興味深いことを見つけましたが、なぜそれが起こっているのかよくわかりません。

そのため、CasperJS (および PhantomJS) を使用すると、Evaluate PhantomJS Evaluate CasperJSメソッドを使用して Page コンテキストに入ることができます。

ページ コンテキスト内にオブジェクトを作成しました。それを CasperJS に返すために、それを文字列に変換します。これが私がすることです:

casper.then(function() {
    var test = this.evaluate(function() {
        var test_obj = { test_obj: ['test'] }
        console.log("TEST OBJECT VALUE:");
        var JSON_obj = JSON.stringify(test_obj);
        console.log(JSON_obj);
        return JSON_obj;
    });
});

したがって、2 つの異なるページでは、結果が異なります。

このページのコンテキストでは、JSON_obj の値は次のとおりです。

{"test_obj":"[\"test\"]"}

この別のページコンテキストでは、JSON_obj 値は次のようになります。

{"test_obj":["test"]}

Rubyで結果をキャッチするので、これは悪いことですJSON.parse。最初のケースでは、配列を文字列として扱います...JSON.stringify異なるページコンテキストで「異なる」動作をするのはなぜですか? 私にとって興味深い!

4

1 に答える 1