2012-03-11 12 views
0

私はウェブサイトを解析するAndroidアプリケーションに取り組んでいますが、Jsoupを動作させることはできません。私はこのHTMLを解析しようとしていますJSoup解析の問題

Here's a pic

私のコード今は次のとおりです。

Document doc = null; 
     try{ 
    doc = Jsoup.connect("URL").get(); 
     Elements tds = doc.select("table.tr>td"); 

    for (Element td : tds) { 
     String tdText = td.text(); 
     System.out.println(tdText); 
    } 
    } 

現時点では何も返しませんが、私は「ドキュメント」、それを印刷する場合ウェブサイト全体を返す。 Drower、E. S.  (エセルStefana)、 レディ、  B:

は、私は、以下の情報を抽出しようとしています。 1879、& nbspありまたはなし。

しかし、私はそれが動作するように継ぎ合せることはできません。

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

+0

クラスに '.'はありませんか?子供は 'foo> bar> baz'です。 –

+0

私はあなたがそれらを混ぜることができる印象の下にあった。混合した例ではなく、どうすればよいでしょうか。私は本当にここに迷っています。 – Tbuermann

+0

あなたはそれらを混ぜることができますが、あなたのセレクターはまだ間違っています。クラス 'tr'を持つ' table'要素の 'td'子を選択しています。代わりに 'td'セルを' table'の 'tr'行に入れたいと思うでしょう。セレクタとして '' td ''を使うだけで、あなたがそれらに乗ることができると思います。しかし、あなたが望む情報だけを抽出するのは難しいでしょう。それを含む 'td'には' id'やページの他の 'td'要素から分離する可能性のある他の独自の特性がないからです。その特定のテーブルの2番目の行の3番目のセル? –

答えて

0

あなたは、セレクタ間違って持って:あなたはおそらくtabletr行のtd細胞を望む一方で、それは、クラスtrtable要素のtd子供たちをピックアップ。セレクターとして"td"を使うだけで、あなたがそれらに乗ることができると私は信じています。

しかし、これはあまりにも一般的です。テーブル内のすべてのセルを選択するためです。必要なセルが常にそのテーブルの行の3番目のセルである場合は、セレクタで["td:eq(2)"]を選択するように絞り込むことができます。 JSoup selectorsの要点を実際に取得し、ドキュメントから抽出したデータをどれだけ必要な要素だけに制限できるかを少し試してみてください。私の小さな実験から、<script>タグ内のJavaScriptコードがあると思われる、ので

Element td = doc.select("td:eq(3)").first(); 
System.out.println(td.text()); 

:あなたは次のスニペットに沿って何かを使用することができます第4のセル内<script>要素の後にテキストを入手するには

それらの要素の1つを含む要素のテキストを尋ねるとスキップされます。

firstではなく、forループを使用しますが、文書内に行があるセルと同じ数のセルがあり、多くのセルがあるためです。

+0

あなたの助けてくれてありがとう、私はこのコードで必要な情報を引き出すことができた: 文字列td = doc.select( "tr:has(td)")。 \t \t System.out.println(td); – Tbuermann

+0

@ tbone24よろしくお願いいたします。答えが役立っている場合は、アップ投票をするか受け入れることを検討してください。 –