2016-10-16 11 views
1

こんにちは、JSoupを使用してネストされたDIVタグ内にあるスパンタグを抽出しようとしています。以下のコードは単なるコードのスニペットです。JSOUPを使用してネストされたDIVタグ内のSPANタグを取得しようとしています

<div class="formitem formgroup horizontal"> 
 
    <div class="formitem formgroup horizontal"> 
 
    <div class="formitem formgroup vertical" style="width:325px"> 
 
     <div class="formitem formgroup horizontal"> 
 
     <div class="formitem formgroup vertical" style="width:325px;"> 
 
      <div class="formitem formgroup horizontal"> 
 
      <span class="formitem formfield"> 
 
          <span class="value" style="font-weight:bold">47 Lower River St</span> 
 
      </span> 
 
      <span class="formitem formfield"> 
 
          <span class="value" style="font-weight:bold">531</span> 
 
      </span> 
 
      </div> 
 
     </div> 
 
     </div> 
 
     <div class="formitem formgroup horizontal"> 
 
     <span class="formitem formfield"> 
 
        <span class="value" style="font-weight:bold">Toronto</span> 
 
     </span> 
 
     <span class="formliteral formitem" /> 
 
     <span class="formitem formfield"> 
 
        <span class="value">Ontario</span> 
 
     </span> 
 
     <span class="formliteral formitem" /> 
 
     <span class="formitem formfield"> 
 
        <span class="value">M5A0G1</span> 
 
     </span> 
 
     </div> 
 
    </div> 
 
    <div class="formitem formgroup vertical" style="width:150px;"> 
 
     <div class="formitem formgroup horizontal"> 
 
     <span class="formitem formfield"> 
 
        <label>List:</label> 
 
        <span class="value" style="font-weight:bold">$279,900</span> 
 
     </span> 
 
     <span class="formitem formfield"> 
 
        <label>For:</label> 
 
        <span class="value" style="font-weight:bold">Sale</span> 
 
     </span> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <span class="formitem formfield"> 
 
     <span class="value">Toronto C08</span> 
 
    </span> 
 
    <span class="formliteral formitem" /> 
 
    <span class="formitem formfield"> 
 
     <span class="value">Moss Park</span> 
 
    </span> 
 
    <span class="formliteral formitem" /> 
 
    <span class="formitem formfield"> 
 
     <span class="value">Toronto</span> 
 
    </span> 
 
    <span class="formitem formfield"> 
 
     <span class="value">120-21-S</span> 
 
    </span> 
 
</div>

私は最後のSPANタグ(トロントC08、モスパーク、トロントおよび120から21-S)

<span class="formitem formfield"> 
 
    <span class="value">Toronto C08</span> 
 
</span> 
 
<span class="formliteral formitem" /> 
 
<span class="formitem formfield"> 
 
    <span class="value">Moss Park</span> 
 
</span> 
 
<span class="formliteral formitem" /> 
 
<span class="formitem formfield"> 
 
    <span class="value">Toronto</span> 
 
</span> 
 
<span class="formitem formfield"> 
 
    <span class="value">120-21-S</span> 
 
</span>

でテキストを抽出しようとしています

私は成功の文書の他の部分を解析しましたが、私はこれらのスパンを分離することはできませんs。コードスニペットはもっと大きなページ(full page)からのものです。私は間違ったアプローチを使用している可能性がありますが、ここで親DIVの間のスパンをキャプチャするために何をしましたか(投稿のトップの結果)。

Elements elements = doc.select("div[class=formitem legacyBorder formgroup vertical]"); 
     Element zoneElement = elements.select("div[class=formitem formgroup vertical") 
       .select("[style=width:500px]").select("div[class=formitem formgroup horizontal").first(); 

は、だから今、私は最初の要素を持っているが、私は、選択したコードのブロックの終わりに最後の6 spanタグを必要としています。ありがとう

+0

spoonfeedingが必要な理由 –

+1

大きなコードのスニペットの場合、実際のセレクタはスニペットのセレクタと異なる場合があります。あなたはウェブページのリンクを投稿できますか? – TDG

+0

[link](http://v3.torontomls.net/Live/Pages/Public/Link.aspx?Key=4fb27e624b1c4e8c8cd9543a3eef1a3e&App=TREB)の全ページへのリンクです。私はまた元のポストにいくつかの情報を追加しました – sunpack

答えて

0

ブラウザのdeveloper tool(F12)を開き、「要素を検査」ツールを選択して、希望のフィールド(たとえばTORONTO C08)を強調表示し、そのcss selectorを選択します。 "TORONTO C08"の場合、それは次のようになります:

#C3627690 > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > span:nth-child(2) > span:nth-child(1) 

他のすべてのエレメンツについても同じことをしてください。すべてのセレクタを取得した後、それらを詳細にチェックします。たとえば、共通のパターン(3番目の値のみが異なるパターン)がある場合は、ループを使用してそれらを反復処理できます。

+0

ありがとうTDG、もっと簡単な方法があると思っていましたが、例を見ると、これが最も直接的な方法かもしれません。私は多くのリストを見ました。パターンには最後のスパンタグ(常に6)が付きます。余分なdivタグで他のリストがスローされたため、CSSの選択が破損する可能性があります。また、IDはユニークです。私はIDを抽出するコードを持っています。私はJSoupの擬似セレクタ** bold ** ':nth-​​last-child(an + b)'を見ていました。これを見ると、ボトムアップから選択できると思います。私はあなたのソリューションと組み合わせてこれを試してみて、解決策が出てきたら教えてください。あなたが何か良いものを見なければ? – sunpack

+0

TDGソリューションは、ソリューションとして評価されています。私はこの解決策を思いついたので、猫をスキンする方法はたくさんあります: – sunpack

+0

'int zoneSize = elements.select( "div [class = formitem formgroup vertical]")select( "[style = width:500px]")。 size(); select( "div [class = formitem formgroup horizo​​ntal")]を選択します( "span [class = formitem formfield"])。 ( "[style = width:500px]")。select( "[style = width:500px]")。select( "i = 1; i <5; i ++)"の場合は の場合は{ です。 get(zoneSize - i).text()を使用すると、 "div [class = formitem formgroup horizo​​ntal" ; System.out.println(zone); } ' – sunpack

関連する問題