jsoup - 查找元素并将其与前一个元素一起删除
jsoup - find element and remove it together with the previous element
我正在尝试从 Android 的股票市场历史价格的 table 中提取一些数据。 table 有时包含我需要删除的行,以便有一个干净的 table。在下面的代码片段中,该行位于第三个 tr 中。我找到了一种使用
删除带有红利的单元格的方法
html = document.select("td[class=\"yfnc_tabledata1\"][align=\"center\"]");
html.remove();
但我不确定如何同时删除带有日期(2015 年 5 月 4 日)的 td。有任何想法吗?然后我通过 class "yfnc_tabledata1" 获取元素并通过它们找到我需要的数据。
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 5, 2015</td>
<td class="yfnc_tabledata1" align="right">28.69</td>
<td class="yfnc_tabledata1" align="right">28.96</td>
<td class="yfnc_tabledata1" align="right">27.64</td>
<td class="yfnc_tabledata1" align="right">27.71</td>
<td class="yfnc_tabledata1" align="right">4,595,800</td>
<td class="yfnc_tabledata1" align="right">27.58</td>
</tr>
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 4, 2015</td>
<td class="yfnc_tabledata1" align="right">28.67</td>
<td class="yfnc_tabledata1" align="right">28.80</td>
<td class="yfnc_tabledata1" align="right">28.35</td>
<td class="yfnc_tabledata1" align="right">28.61</td>
<td class="yfnc_tabledata1" align="right">33,537,800</td>
<td class="yfnc_tabledata1" align="right">28.47</td>
</tr>
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 4, 2015</td>
<td class="yfnc_tabledata1" align="center" colspan="6">0.26 Dividend</td>
</tr>
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 1, 2015</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">0</td>
<td class="yfnc_tabledata1" align="right">28.28</td>
</tr>
我自己没有尝试过,但你可以尝试这样做:
document.select("td[class=\"yfnc_tabledata1\"][align=\"center\"]").parents();
这样您将获得封闭的 "tr" 并且您可以删除整行。
好的,已经找到解决方案了。
for( Element element : document.select("td[class=\"yfnc_tabledata1\"][align=\"center\"]")) {
el = element.parent();
el.remove();
}
通过这种方式,我找到了带有股息的 td,我得到了它的父级并将其全部删除。似乎有效。
我正在尝试从 Android 的股票市场历史价格的 table 中提取一些数据。 table 有时包含我需要删除的行,以便有一个干净的 table。在下面的代码片段中,该行位于第三个 tr 中。我找到了一种使用
删除带有红利的单元格的方法html = document.select("td[class=\"yfnc_tabledata1\"][align=\"center\"]");
html.remove();
但我不确定如何同时删除带有日期(2015 年 5 月 4 日)的 td。有任何想法吗?然后我通过 class "yfnc_tabledata1" 获取元素并通过它们找到我需要的数据。
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 5, 2015</td>
<td class="yfnc_tabledata1" align="right">28.69</td>
<td class="yfnc_tabledata1" align="right">28.96</td>
<td class="yfnc_tabledata1" align="right">27.64</td>
<td class="yfnc_tabledata1" align="right">27.71</td>
<td class="yfnc_tabledata1" align="right">4,595,800</td>
<td class="yfnc_tabledata1" align="right">27.58</td>
</tr>
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 4, 2015</td>
<td class="yfnc_tabledata1" align="right">28.67</td>
<td class="yfnc_tabledata1" align="right">28.80</td>
<td class="yfnc_tabledata1" align="right">28.35</td>
<td class="yfnc_tabledata1" align="right">28.61</td>
<td class="yfnc_tabledata1" align="right">33,537,800</td>
<td class="yfnc_tabledata1" align="right">28.47</td>
</tr>
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 4, 2015</td>
<td class="yfnc_tabledata1" align="center" colspan="6">0.26 Dividend</td>
</tr>
<tr>
<td class="yfnc_tabledata1" nowrap align="right">May 1, 2015</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">28.68</td>
<td class="yfnc_tabledata1" align="right">0</td>
<td class="yfnc_tabledata1" align="right">28.28</td>
</tr>
我自己没有尝试过,但你可以尝试这样做:
document.select("td[class=\"yfnc_tabledata1\"][align=\"center\"]").parents();
这样您将获得封闭的 "tr" 并且您可以删除整行。
好的,已经找到解决方案了。
for( Element element : document.select("td[class=\"yfnc_tabledata1\"][align=\"center\"]")) {
el = element.parent();
el.remove();
}
通过这种方式,我找到了带有股息的 td,我得到了它的父级并将其全部删除。似乎有效。