2

このウェブサイトのテーブルからすべての詳細を取得するために、HTML パーサーとして Jsoup を使用しています。以下のコードでは、最初のページのデータしか取得できません。何かアドバイスはありますか?

   public static void main(String[] args) {
   String html = "http://www.fifa.com/worldranking/rankingtable/index.html#";
   try {
     Document doc = Jsoup.connect(html).get();        
     Elements tableElements = doc.select("table");

     Elements tableHeaderEles = tableElements.select("thead tr th");
     System.out.println("headers");
     System.out.print("row");
     for (int i = 0; i < tableHeaderEles.size(); i++) {
        System.out.print(tableHeaderEles.get(i).text() + " | ");
     }
     System.out.println();

     Elements tableRowElements = tableElements.select(":not(thead) tr");

     for (int i = 0; i < tableRowElements.size(); i++) {
        Element row = tableRowElements.get(i);
        System.out.print("row");           
        Elements rowItems = row.select("td");
        for (int j = 0; j < rowItems.size(); j++)         
        {                              
           System.out.print(rowItems.get(j).text() + " | ");                              
        }
        System.out.println();
     }

  } catch (IOException e) {
     e.printStackTrace();
  }    }
4

1 に答える 1

1

JSoup は HTML パーサーですが、Web サイトを見ると、javascript を使用してテーブルをロードしています。そのため、クリックする必要があります。

ナビゲートには HTMLUnit または Selenium を使用し、HTML の解析には JSoup を使用できます。

お役に立てば幸いです。

編集:

ページのコードが見やすくなりました。私はそれが役に立つと思います:

http://www.fifa.com/worldranking/rankingtable/gender=m/rank=100/confederation=0/page=0/_ranking_table.html

URL の値を変更します。ランクが上がる可能性があることを確認し (ランキングの日付です)、重要なのはページです。ページ パラメータを増やすと、すべてのランキングを読み込むことができます。次に、JSoup で解析するだけで十分です。

たとえば、最後のランキングは次のようになります: http://www.fifa.com/worldranking/rankingtable/gender=m/rank=237/confederation=0/page=1/_ranking_table.html

次に、パラメーター page=2、次に 3、... を 7 まで増やすことができます。

乾杯。

于 2014-04-17T15:09:57.900 に答える