私はnode.JS
アプリケーション内でjQuery
セレクタを使用できるように、cheerio
ライブラリを使用してデータを削っています。 私はデータを削っているウェブサイトに3つのテーブルがあり、これらのテーブルはすべて同じクラス名を持ち、同一です。 これらのテーブル内のテーブル行数(tr
)は異なる場合があります。jQueryは、同一の3つのうち最初のテーブルからすべての行を選択します。
の下側には、テーブルのいずれかのHTMLスケルトンです:私がやりたいのは何
<table class="component">
<tr class="body-row">
<td class="column">
<span class="display-inline-block">
<span class="data">Text 1</span> <!-- I'd like to be able to scrape these values -->
</span>
</td>
<td class="column">
<span class="display-inline-block">
<span class="data">Text 2</span> <!-- I'd like to be able to scrape these values -->
</span>
</td>
</tr>
<tr class="body-row">
<td class="column">
<span class="display-inline-block">
<span class="data">Text 3</span> <!-- I'd like to be able to output these values as JSON -->
</span>
</td>
<td class="column">
<span class="display-inline-block">
<span class="data">Text 4</span> <!-- I'd like to be able to output these values as JSON -->
</span>
</td>
</tr>
</table>
はJSON
として最初のテーブルからすべての行のみ、最終的に出力それらのテキストを選択しています。これらのテーブルがすべて基本的に同じ(同じクラス名)の場合、どのようにしてこれを達成できますか?
私はこれまでに試したことがありますが、まだ最初のものではなく3つのテーブルすべてからテキストを出力します。
var that = $(this);
that.first('table.component').find("tr.body-row").each(function(){
console.log(that.find('span.data').text());
});
ありがとうございます!
最初のテーブルを選択しますか – Alex
ああ、申し訳ありません。それは '$(this)'を参照する変数です。私は自分のコードで宣言しましたが、ここにそれを含めるのを忘れてしまいました。 –