0

JSoup フレームワークを使用して、以下の div を反復処理し、各<p>タグ内のテキストを配列に抽出しようとしています。<div>とのリスト<p>は無限に長いため、 do / while ループまたは for ループが の情報を取得する方法として推奨され<p>ます。

以下のタグを反復処理する方法がわかりません。なぜなら、どのタグがどのタグを配列に格納して<div>いるかを追跡する方法がわからないからです。私はJavaとプログラミング全般に少し慣れていないので、答えが明白なものである場合はお詫びします。 <p><div>

手伝ってくれてどうもありがとう。追加できることがあれば教えてください。

HTML の例 (何百回も繰り返されると仮定):

      <div class="happy-div"> // want everything within this div to be in one array element
              <p>good text here.</p> 
              <p>More good Text here.</p>
              <p>Some good stuff here.</p> 
      </div> 
      <div class="sad-div"> // want everything within this div to be in a separate array element
              <p>Some unhappy text here.</p>
              <p>More unhappy Text here.</p>
              <p>Some unhappy stuff here.</p>
      </div> 
      <div class="depressed-div"> // everything within this div to be in a separate array element
              <p>Some melancholy text here.</p>
              <p>More melancholy Text here.</p>
              <p>Some melancholy stuff here.</p> 
      </div>
      .... repeats hundreds of times

擬似コード:

String[] arrayOfP;
for (int i = 0; i < numberOfDivs; i++)
{
    arrayOfP[i] = doc.select("All of the text in the <p> tags within the div we've incremented to")
    System.out.println(arrayOfP[i])
}

期待される結果:

String 配列要素の値の内容を出力すると、次のようになると思います。

arrayofP[1] Some good text here. More good Text Here. Some good stuff here.
arrayofP[2] Some unhappy text here. More unhappy Text Here. Some unhappy stuff here.
arrayofP[3] Some melancholy text here. More melancholy Text Here. Some melancholy stuff here.
....
4

1 に答える 1

1

を使用して、各 の要素HashMapのリストを格納できます。マップの各キーは、div に指定できる ID であり、値は要素のリストです。PdivP

元:

<div id="id_1" class="happy-div">
    <p>good text here.</p> 
    <p>More good Text here.</p>
    <p>Some good stuff here.</p> 
</div> 

Map<String, List<String>> data = new HashMap<String, List<String>>();
Elements divs = doc.select("div");
for (Element div : divs ) {
    List<String> pList = new ArrayList<String>();
    Elements pElements = div.select("p");
    for (Element pElement : pElements) {
        pList.add(pElement.text());
    }
    data.put(div.attr("id"), pLists);
}
for (List<String> pList : data.values()) {
    System.out.println(pList);
}
于 2013-07-29T10:05:20.663 に答える