キーワードの後に特定の値を取得するためにHTMLテキストを解析しようとしています。以下のコードの例:
<table>
<tr>
<td class="odd">TW-Central</td>
<td class="odd">$3.8600</td>
<td class="odd">$3.8600</td>
<td class="odd">$3.8600</td>
<td class="odd red">-0.0168</td>
<td class="odd right">42,500</td>
<td class="odd right">7</td>
</tr>
<tr>
<td class="even">Waha</td>
<td class="even">$3.9600</td>
<td class="even">$3.8800</td>
<td class="even">$3.9196</td>
<td class="even red">-0.0436</td>
<td class="even right">69,500</td>
<td class="even right">17</td>
</tr>
<tr>
<td class="odd">White River Hub</td>
<td class="odd">$3.8200</td>
<td class="odd">$3.7975</td>
<td class="odd">$3.8088</td>
<td class="odd red">-0.0184</td>
<td class="odd right">81,200</td>
<td class="odd right">13</td>
</tr>
</table>
キーワードWahaが見つかった後、その下の価格を取得して返すにはどうすればよいですか?どんな助けでも大歓迎です。また、STSを使用してJavaでこれをコーディングしています。これを実現するのにJSoupが最適でない場合は、何を使用するかについてのアドバイスも大歓迎です。ありがとう!
テーブルの位置が変更されない場合は、すべてのtd要素を取得してから、get(index)メソッドを使用して必要な要素を選択します。
StringBuilder html = new StringBuilder();
html.append(" <table>");
html.append(" <tr>");
html.append(" <td class=\"even\">Waha</td>");
html.append(" <td class=\"even\">$3.9600</td>");
html.append(" <td class=\"even\">$3.8800</td>");
html.append(" </tr>");
html.append(" </table>");
Document document = Jsoup.parse(html.toString());
Elements tdElements = document.select("td");
String waha = tdElements.get(0).text();
String firstPrice = tdElements.get(1).text();
String secondPrice = tdElements.get(2).text();
System.out.println("The first td content is: " + waha);
System.out.println("The second td content (firstPrice) is: " + firstPrice);
System.out.println("The third td content (secondPrice) is: " + secondPrice);
更新:
動的に選択するには、次のコードを使用します。
@Test
public void testJSOUP() {
StringBuilder html = new StringBuilder();
html.append(" <table>");
html.append(" <tr>");
html.append(" <td class=\"odd\">TW-Central</td>");
html.append(" <td class=\"odd\">$3.9600</td>");
html.append(" <td class=\"odd\">$3.8800</td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td class=\"even\">Waha Row</td>");
html.append(" <td class=\"even\">$4.9600</td>");
html.append(" <td class=\"even\">$5.8800</td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td class=\"odd\">White River Hub</</td>");
html.append(" <td class=\"odd\">$4.9600</td>");
html.append(" <td class=\"odd\">$5.8800</td>");
html.append(" </tr>");
html.append(" </table>");
Document document = Jsoup.parse(html.toString());
Elements trElements = document.select("tr");
for (Element tableRows : trElements) {
Elements tdElements = tableRows.select("td");
String articleName = tdElements.get(0).text();
String firstPrice = tdElements.get(1).text();
String secondPrice = tdElements.get(2).text();
System.out.println("The article: " + articleName + "has price one:" + firstPrice + " and price two:" + secondPrice);
}
}
これにより、次の出力が作成されます
記事:TW-Centralhasの価格1:$ 3.9600、価格2:$ 3.8800
記事:Waha Rowhasの価格1:$ 4.9600、価格2:$ 5.8800
記事:White River Hubhasの価格1:$ 4.9600、価格2:$ 5.8800
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加