2017-04-18 5 views
-1

でテーブルを抽出することができます。http://uk.soccerway.com/teams/scotland/saint-mirren-fc/1916/squad/どのように私はAndroidアプリを書いて、私は、このWebページからテーブルデータを得るために、私の呼び出しを構築する方法を把握しようとしているJSOUP

私はJSOUPのWebサイトから料理の本を読みましたしかし私は少し前にこのライブラリを使用していないので、私はこのようなものを思いついた:

doc = Jsoup.connect("http://uk.soccerway.com/teams/scotland/saint-mirrenfc/1916/squad/").get(); 
Element squad = doc.select("div.squad-container").first(); Element 
Elements table = squad.select("table squad sortable"); 

私はまだプレイヤーの統計を取得することはどこにもありません。私は次のステップは、 "テーブルの分隊ソート可能"内の "tbody"タグに新しい要素オブジェクトを指すことであると思いますか? 私はテーブルを読んだ後、ループ内の各行を読み取ると、forループを使用しなければならないことがわかります。

残念ながら、テーブル構造は経験のない人にとっては少し複雑ですので、私は本当にいくつかのアドバイスを感謝します!

答えて

0

基本的に各行には次のセレクタがあります。
#page_team_1_block_team_squad_3-table > tbody:nth-child(2) > tr:nth-child(X)ここで、Xは行番号(1から始まる)です。

String url = "http://uk.soccerway.com/teams/scotland/saint-mirren-fc/1916/squad/"; 
String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"; 
Document doc = null; 
try { 
    doc = Jsoup.connect(url) 
      .userAgent(userAgent) 
      .get(); 
} catch (IOException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 
int i = 1; 
Elements row; 
do { 
    row = doc.select("#page_team_1_block_team_squad_3-table > tbody:nth-hild(2) > tr:nth-child(" + i + ")"); 
    for (Element el : row) { 
     System.out.print(el.select(".shirtnumber").text() + " "); 
     System.out.println(el.select(".name").text()); 
     i++; 
    } 
} while (row != null); 

これは、各プレイヤーの番号と名前を表示します:
一つの方法は、行を反復処理し、情報を抽出することです。行の数を数えたくないので(変更をプログラムに反映させたくない)、私はdo...whileループを使用することをお勧めします。行が存在する(または空でない)と繰り返します。
出力Iが得る:

1 J. Langfield 21 B.オブライエン 28 R. Willisonに 2 Sディメトリオ 3 G.アーヴァイン 4 A.ウェブスター ...

ブラウザのデベロッパーツールを使用して他の列の名前を取得し、必要な情報をすべて取得します。

関連する問題