2012-02-20 14 views
0

私はjsoupを使ってウェブサイトのテーブルからデータを抽出しています。 http://www.moneycontrol.com/stocks/marketstats/gainerloser.php?optex=BSE&opttopic=topgainers&index=-1を使用してください。私はUsing JSoup To Extract HTML Table Contentsと他の同様の質問を参照しましたが、データを印刷しません。誰かがこれを達成するために必要なコードを私に提供してもらえますか?Jsoupを使ってデータを抽出する

public class TestClass 
{ 


public static void main(String args[]) throws IOException 
{ 
Document doc = Jsoup.connect("http://www.moneycontrol.com/stocks/marketstats/gainerloser.php?optex=BSE&opttopic=topgainers&index=-1").get(); 

    for (Element table : doc.select("table.tablehead")) { 
     for (Element row : table.select("tr")) { 
      Elements tds = row.select("td"); 
      if (tds.size() > 6) { 
       System.out.println(tds.get(0).text() + ":" + tds.get(1).text()); 
      } 
     } 
    } 
+1

あなたのコードを見て参考にしてください。 .. – quaylar

+0

[利用規約](http://www.moneycontrol.com/cdata/termsofuse.php)は、moneycontrol.comの書面による明示的な許可なく、そのような行為が許可されないことを示唆しています。許可を得ている場合は、データにアクセスするための優先APIについて質問してください。例えば。私はリンクの1つがRSSフィードに言及していることに気付きました。これは、HTMLよりもはるかに「機械に優しい」形式の情報です。 –

+0

私はテーブルのトップゲイナーの名前を取得したいと思います。コードをちょっと微調整する必要がありますが、私がjsoupを初めて使ったときとまったく同じようにしなければならないことはわかりません。 – user1092042

答えて

1

あなたがテーブルの内容(ない頭)を取得したい場合は、あなたがテーブルのセレクタを変更する必要があります。代わりに

for (Element table : doc.select("table.tablehead")) 
+0

これは、私に範囲外の例外のインデックスを与え、配列リストのサイズが0であると言います。 – user1092042

+0

Hmm、strange。コードを再確認し、セレクタ文字列で '' table.bdrtpg "'を試してください。 – vacuum

+0

また、 'doc.select(" div.FL ")' – vacuum

0

一つの重要な事柄の

for (Element table : doc.select("table.tbldata14")) 

何か問題があるかもしれないので、HTMLを解析するときに何がDocに入っているか確認することです: 1.サイトはiframeを使用している可能性がありますコンテンツを表示するには 2. JavaScriptを使用してコンテンツを表示 3. jsoupの解析を許可しないスクリプトがあるサイトはほとんどないため、doc要素にはランダムなデータが含まれます。

関連する問題