同様のウェブページのデータをJSONに入れようとしています。ページの構造が定義されているが、各ブロックの量は変化し得る:Jquery/Cheerio:タグ間のコンテンツをループ経由でJSONにプッシュ
<h2>Block1</h2>
\t <p><strong>Title1</strong></p>
\t \t <p>content</p>
\t \t
\t \t <!–– the amount of p with content may vary ––>
\t \t
\t \t <p>content</p>
\t \t <p>content</p>
\t
\t <!–– the amount of p with highlighted title may vary ––>
\t
\t <p><strong>Title_N</strong></p>
\t \t <p>content</p>
\t \t <p>content</p>
\t
<!–– the amount of h2 blocks may vary ––>
<h2>Block_N</h2>
\t <p><strong>Other_Title</strong></p>
\t \t <p>content</p>
Iは、以下のようなJSONを形成しようとしているが、タグを反復処理する問題を抱えた - タグの間に - との間タグ彼らは階層の同じレベルにあり、その量は不明である:
result.push({
BlockName: $('.frame h2').text(),
BlockContent:[{
TitleName1: $('.frame p>strong:nth-of-class(1)').text(),
TitleContent1[{
Content1:$('.frame p>strong:nth-of-class(1)').nextUntil($('.frame p>strong:nth-of-class(2)')).each(///),
Content2:$('.frame p>strong:nth-of-class(2)').nextUntil($('.frame p>strong:nth-of-class(3)')).each(///)),
///
ContentN:$('.frame p>strong:nth-of-class(Last-1)').nextUntil($('.frame p>strong:nth-of-class(LastOne)')).each(///),
}],
///
}],
})
正確にはどのようなタグ、私は、各エントリのためのデータを収集する必要があるまで、だから私も指定することはできません。それぞれの変数にすべてのタグのインデックスを格納しない方法はありますか?例えば
- 作成したフラットJSONでいくつかのエントリの階層を下げる:like this
私は何のアプローチを試してみてください?
ご協力ありがとうございました!
うわー!ありがとう、魅力のような作品!また、コードは近代的に見えます。私の方法のより窪んだインデントされたリストの代わりにこのアプローチを実装しようとします。 –