私は現在、Ruby と xPath を使用した小さな Web スクレイピング プロジェクトに取り組んでいます。残念ながら、ウェブサイトの構造が非常に悪いため、ちょっとした問題が発生します。
<h3>Relevant Headline</h3>
<p class="class_a class_b">Content starts in this paragraph...</p>
<p class="class_a ">...but this content belongs to the preceding paragraph</p>
<p class="class_a class_b">Content starts in this paragraph...</p>
<p class="class_a ">...but this content belongs to the preceding paragraph</p>
<h3>Some other Headline</h3>
ご覧のとおり、いくつかの p タグをフレーム化する 2 つの h3 タグがあります。フレーム化されたすべての p-tag を選択したい。私はすでにそれを行うために次のxPathを見つけました:
h3[contains(text(),"Relevant")]/following-sibling::p[1 = count(preceding-sibling::h3[1] | ../h3[contains(text(),"Relevant")])]
しかし、ここで問題が発生します。上記の 2 つの段落は一緒に属しています。class_b の段落 (最初の段落) は新しいデータ エントリを開始し、次の段落 (2 番目) はこのエントリに属します。3と4も同じです。問題は次のとおりです。3 つの段落が一緒に属する場合もあれば、4 つの段落が一緒に属する場合もありますが、ほとんどの場合、2 つの段落が一緒に属する場合があります。
これらの内側の段落をグループごとに選択し、Ruby で 1 つの文字列に結合するにはどうすればよいですか?