私はnode.io
ウェブサイトをこすり取るのに使っています。現在、スクレイピングのチュートリアルを行っています。
each
セレクターで使用しています
$('selector').each( ... , function () { ... } );
ただし、セレクターが1つの要素のみを選択すると、次の問題が発生します。
TypeError: Object #<Object> has no method 'each'
これの原因は何であり、どうすればこの問題を軽減できますか
私はnode.io
ウェブサイトをこすり取るのに使っています。現在、スクレイピングのチュートリアルを行っています。
each
セレクターで使用しています
$('selector').each( ... , function () { ... } );
ただし、セレクターが1つの要素のみを選択すると、次の問題が発生します。
TypeError: Object #<Object> has no method 'each'
これの原因は何であり、どうすればこの問題を軽減できますか
のソースコードを見るnode.io
と、デフォルトではnode-soupselect
jQueryではなく使用しているように見えます。
設定してみてください:
this.options.expand_single_selected = false;
ジョブのrunメソッド内。または、ジョブを作成するときに設定します
new nodeio.Job({timeout:10,expand_single_selected:false}, methods);
これはコード内のこれらの行によってチェックされ、正しい動作を強制します。
node.io
の作成者chrisoから:
正直なところ、これは私の側の設計の失敗です。アイテムが1つしかないコレクションから1つの要素が必要になるたびに、first()と入力するのにうんざりしていたので、このショートカットを追加しました。
問題を解決する代わりに使用するように変更する方法と、に固執することの回避策と利点については、このプロジェクトの問題を参照してください。jQuery
soupselect
リンクによると、$
jQueryを使用していない場合は、node-soupselectを使用しています。
メソッドはありません.each
。
代わりに使用する
$('selector').forEach
これはネイティブJS関数です
単一の要素を[角かっこ]に入れると、単一のアイテム配列として機能し、この問題を取り除きます。