0

私の問題は、divクラス内のdivクラス内にdivクラスを取得する必要があり、同じ名前でデータが異なるクラスの4つのインスタンスがあることです...現在、divクラス内の最初のdivクラスを取得できますが、その中の他の要素にもアクセスできるようにする必要があります......例:

docTide = Jsoup.connect("http://www.mhpa.co.uk/search-tide-times/").timeout(600000).get();
Elements tideTableRows = docTide.select("div.tide_row.odd");
Element firstDiv = tideTableRows.first();
Element secondDiv = tideTableRows.get(1);
System.out.println("This is the first div: " + firstDiv.text());
System.out.println("This is the second div: " + secondDiv.text()); 

しかし、これは 2 つの繰り返しがある Web ページの構造であり、それぞれにアクセスする必要があります。

 <div class="tide_row odd"> 
  <div class="time">00:57</div>
  <div class="height_m">4.9</div>
  <div class="height_f">16,1</div>
  <div class="range_m">1.9</div>
  <div class="range_f">6,3</div>
  </div>
 <div class="tide_row even">
  <div class="time">07:23</div>
  <div class="height_m">2.9</div>
  <div class="height_f">9,6</div>
  <div class="range_m">2</div>
  <div class="range_f">6,7</div>
  </div>
  <div class="tide_row odd">
  <div class="time">13:46</div>
  <div class="height_m">5.1</div>
  <div class="height_f">16,9</div>
  <div class="range_m">2.2</div>
  <div class="range_f">7,3</div>
  </div>
  <div class="tide_row even">
  <div class="time">20:23</div>
  <div class="height_m">2.8</div>
  <div class="height_f">9,2</div>
  <div class="range_m">2.3</div>
  <div class="range_f">7,7</div>
  </div>

基本的に、同じ名前の別のクラスにネストされたクラスがあります。クラスからデータを個別に返す正しい構文を作成するにはどうすればよいですか? これを説明するのはかなり難しいです!

編集:これは、ネストされたクラスから情報を抽出する方法です:

 docTide = Jsoup.connect("http://www.mhpa.co.uk/search-tide-times/").timeout(600000).get();
                         Elements tideTimeOdd = docTide.select("div.tide_row.odd div:eq(0)");
                         Elements tideTimeEven = docTide.select("div.tide_row.even div:eq(0)");
                         Elements tideHightOdd = docTide.select("div.tide_row.odd div:eq(2)");
                         Elements tideHightEven = docTide.select("div.tide_row.even div:eq(2)");
                            Element firstTideTime = tideTimeOdd.first();
                            Element secondTideTime = tideTimeEven.first();
                            Element thirdTideTime = tideTimeOdd.get(1);
                            Element fourthTideTime = tideTimeEven.get(1);

                            Element firstTideHight = tideHightOdd.first();
                            Element secondTideHight = tideHightEven.first();
                            Element thirdTideHight = tideHightOdd.get(1);
                            Element fourthTideHight = tideHightEven.get(1);
4

2 に答える 2

1

次のようにするだけで問題なく動作します。

 docTide = Jsoup.connect("http://www.mhpa.co.uk/search-tide-times/").timeout(600000).get();
                            Elements tideTableRows = docTide.select("div[class=tide_row odd]");
                            Element firstDiv += tideTableRows.select("div[class=time]");
                            Element secondDiv += tideTableRows.select("div[class=height]");

可能であれば、ID で要素にアクセスするようにしてください。これにより、コードが大幅に簡素化されます。例として、同じコンテナーに 50 個のヘッダーがある場合、このようにすべてをカウントする必要はありません。

個別の要素:

 docTide = Jsoup.connect("http://www.mhpa.co.uk/search-tide-times/").timeout(600000).get();
                            Element tideTableRows = docTide.select("div[class=tide_row odd]").first();
                            Element firstDiv1 = tideTableRows.select("div[class=time]");
                            Element secondDiv1 = tideTableRows.select("div[class=height]");
                            tideTableRows2 = docTide.select("div[class=tide_row odd]").second();
                            Element firstDiv2 = tideTableRows.select("div[class=time]");
                            Element secondDiv2 = tideTableRows.select("div[class=height]");
于 2013-09-29T14:13:52.167 に答える