2016-04-22 8 views
0

JSoupを使用してHTMLテーブル行のすべての要素を取得しようとしています。しかし、それは一貫して列を省略し、表の列の約半分しか印刷していないようです。私はHTMLのテーブルそうのように持っている場合たとえば、:JSoupがHTMLテーブル行のすべての要素を印刷しない

<table id="resultTable" width="100%" border="1" cellpadding="1" cellspacing="0" bordercolor="#FFFFFF"> 
    <tbody> 
     <tr class="table"> 
      <td align="right">1</td> 
      <td align="right">4</td> 
      <td><div>NAME</div></td> 
      <td><div>Country</div></td> 
      <td><div>Club</div></td> 
      <td><div>SR</div></td> 
      <td align="right"><div>56.00 (5)</div></td> 
      <td align="right"><div>51.62 (3)</div></td> 
      <td align="right"><div>1:47.62</div></td> 
     </tr> 
    </tbody> 
</table> 

そして、私はそうのような細胞を印刷してみてください:

Document doc = Jsoup.parse(html); //html is a string containing the full HTML page 
Elements tableRows = doc.select("tr.table"); 

for (Element tableRow : tableRows) { 

    System.out.println(tableRow.text()); 

} 

を何らかの理由で、これまでに印刷された細胞のみが、第一です3番目と9番目のセル。

完全なHTML hereがあります。 (アルペンスキーレースのライブタイミングを表示するためのウェブサイトです)。簡潔さのために、私はただ一つの<tr>タグを含んでいましたが、ウェブサイトには何百ものものが含まれています。また、それが重要かどうかわかりませんが、<div>はすべて、Javascript関数onmouseoveronmouseoutを呼び出します。

問題は悪いHTMLですか?私はJSoupが悪いHTMLを世話したり、掃除したりしていると思ったまたはJSoupを正しく使用していないのですか?

ありがとうございました。

EDIT:修正済みです。私はAndroid WebViewを使用していたので、私はデスクトップ版の代わりにモバイルサイトを読み込んでいたことに気づいていませんでした。

答えて

1

まずどのhtmlがあることを確認してください:多分あなたが試すことができますhttp://live-timing.com/includes/aj_race.php?r=163390&&m=1&&u=5によってthe source downloaded from the urlまたはthe full html copied from browser .IF the source、あなたが原因ページに何を取得しますが、動的であり、表のロードこのURLから直接結果を得る)。the full htmlの場合、セレクタ構文に問題はありません。https://try.jsoup.org/で試してみてください。結果は正しいです。

+0

実際には、すべてのコンテンツが解析される前にロードされていることを確認します。私はまだそれは奇妙な行動だと思う、私は同様の(しかし異なる)ウェブサイトでしようとするたびに、すべてが完璧に動作するため。 – justbourv

+1

@justbourvちょっと前に、私はブラウザからローカルファイルdemo.htmlにページを保存して、私のプログラムでそれを 'String html'に読み込んでコードを実行しました。結果は正しいです、それは全体の細胞を印刷しました。私のjsoupバージョンは1.8.3です。だからあなたの問題はあなたの 'html'に正確にあると思います。あなたはそのページを読み込むために何を使いましたか?それとも?あなたの 'html'を'実ブラウザで 'html全体と比較しようとします。 – magooup

+0

奇妙な。私はAndroid上で 'Webview'を使用します。多分それは問題です、私はセレンをチェックアウトします – justbourv

関連する問題