0

私はnode.ioウェブサイトをこすり取るのに使っています。現在、スクレイピングのチュートリアルを行っています。

eachセレクターで使用しています

$('selector').each( ... , function () { ... } );

ただし、セレクターが1つの要素のみを選択すると、次の問題が発生します。

TypeError: Object #<Object> has no method 'each'

これの原因は何であり、どうすればこの問題を軽減できますか

4

2 に答える 2

4

のソースコードを見るnode.ioと、デフォルトではnode-soupselectjQueryではなく使用しているように見えます。

設定してみてください:

this.options.expand_single_selected = false;

ジョブのrunメソッド内。または、ジョブを作成するときに設定します

new nodeio.Job({timeout:10,expand_single_selected:false}, methods);

これはコード内のこれらの行によってチェックされ、正しい動作を強制します。

node.ioの作成者chrisoから:

正直なところ、これは私の側の設計の失敗です。アイテムが1つしかないコレクションから1つの要素が必要になるたびに、first()と入力するのにうんざりしていたので、このショートカットを追加しました。

問題を解決する代わりに使用するように変更する方法と、に固執することの回避策と利点については、このプロジェクトの問題を参照してください。jQuerysoupselect


リンクによると、$jQueryを使用していない場合は、node-soupselectを使用しています。

メソッドはありません.each

代わりに使用する

$('selector').forEach

これはネイティブJS関数です

于 2013-03-22T01:13:31.240 に答える
0

単一の要素を[角かっこ]に入れると、単一のアイテム配列として機能し、この問題を取り除きます。

于 2013-03-22T01:00:21.753 に答える