jsoup删除某个类的div

use*_*850 6 java jsoup

我有一个这样的列表jsoup:

Elements tbody = new Elements();
Run Code Online (Sandbox Code Playgroud)

tbody可能看起来像这样(----分隔tbody列表中的元素):

<td> 
 <div data-emission="56b2140adb6da7bf3cbf6228" class="mainCell"> 
  <a href="/tv/weather-country-12457/"> <span class="left">16:00</span> 
   <div> 
    <p>Weather - country</p> 
   </div> </a> 
 </div> 
 <div data-emission="56b2140adb6da7bf3cbf6237" class="mainCell shows pending"> 
  <a href="/shows/that's-70-show-550347/epi1201/"> <span class="left">16:10</span> 
   <div> 
    <p>That's 70 show</p> 
    <span class="info">epi.?1201, Show</span> 
   </div> <p class="onAir"> <span>Pending</span> <u></u> <u style="width: 5%"></u> </p> </a> 
 </div> </td>
 ---------------------------------------------------------------------------
 <td> 
 <div data-emission="56b23876db6da7bf3cbf6588" class="mainCell pending"> 
  <a href="/tv/weather-563806/"> <span class="left">16:10</span> 
   <div> 
    <p>Weather</p> 
   </div> <p class="onAir"> <span>Pending</span> <u></u> <u style="width: 51%"></u> </p> </a> 
 </div> 
 <div data-emission="56b23876db6da7bf3cbf6589" class="mainCell"> 
  <a href="/tv/animal-cops-2615/"> <span class="left">16:15</span> 
   <div> 
    <p>Animal Cops</p> 
    <span class="info">epi.?3079, Show</span> 
   </div> </a> 
 </div> 
 <div data-emission="56b23876db6da7bf3cbf658a" class="mainCell shows"> 
  <a href="/show/house-md-1601/odc137/"> <span class="left">16:30</span> 
   <div> 
    <p>House MD</p> 
    <span class="info">epi.?137, Show</span> 
   </div> </a> 
 </div> </td>
 ---------------------------------------------------------------------------
 <td> 
 <div data-emission="56b213b3db6da7bf3cbf61a1" class="mainCell movies pending"> 
  <a href="/movie/star-trek-564170/"> <span class="left">16:00</span> 
   <div> 
    <p>Star Trek</p> 
    <span class="info">Movie</span> 
    <span class="szh prem">| Premiere</span> 
   </div> <p class="onAir"> <span>Pending</span> <u></u> <u style="width: 21%"></u> </p> </a> 
 </div> </td>
Run Code Online (Sandbox Code Playgroud)

我的目标是删除所有待处理/ onAir的电影/节目.所以在这个例子中我想摆脱一个整体div:

  • that's 70 show
  • weather
  • star trek

FE:

for(int i = 0; i < tbody.size(); i++){
            tbody.get(i).select("div").select("p").select(".onAir").remove();
        }
Run Code Online (Sandbox Code Playgroud)

它只删除元素本身,而不是整体div.我在很多方面尝试过,但没有成功.我将不胜感激任何帮助.

luk*_*sch 5

似乎待处理的节目也带有pendingcss 类。如果所有情况都是如此,您可以通过以下方式非常简单地做到这一点:

doc.select("td>div.pending").remove();
Run Code Online (Sandbox Code Playgroud)

这将从文档中删除div具有该类的所有元素。pending如果它们是某个td元素的直接子元素。

或者,您可以使用您的方法并过滤具有p正确onAir类和内部文本的元素:

doc.select("td>div:has(p.onAir:contains(Pending))").remove();
Run Code Online (Sandbox Code Playgroud)

请参阅CSS 选择器语法以了解 Jsoup 的强大功能。