簡體   English   中英

如何在td標簽jsoup java之后獲取第一個元素子元素

[英]How to get first element children after td tag jsoup java

我需要幫助。 我想在此網站中獲取此表的所有td文本https://www.servientrega.com/RastreoContado/RastreoContado2.faces?idGuia=2003159909&idPais=1

帶有我想要的信息的表-圖片

但是,有一個帶有超鏈接的特殊td標簽。

我只想獲取詳細信息包表的。

特殊的td標簽-圖片

我的結果和我不想要的-圖片

編輯:

我想用id = form01:tableEx4_data獲取tbody的行,第三個圖像是我想要的。

Web的部分代碼https://www.servientrega.com/RastreoContado/RastreoContado2.faces?idGuia=2003159909&idPais=1

    <tbody id="form01:tableEx4_data" class="ui-datatable-data ui-widget-content">
 <tr data-ri="0" class="ui-widget-content ui-datatable-even" role="row">
  <td role="gridcell"><span class="outputText">GUIA GENERADA</span></td>
  <td role="gridcell"><span class="outputText">BOGOTA (CUNDINAMARCA)</span></td>
  <td role="gridcell"><span class="outputText">04/04/2018 17:33:05</span></td>
 </tr>
 <tr data-ri="1" class="ui-widget-content ui-datatable-odd" role="row">
  <td role="gridcell"><span class="outputText">INGRESO AL CENTRO LOGISTICO</span></td>
  <td role="gridcell"><span class="outputText">BOGOTA (CUNDINAMARCA)</span></td>
  <td role="gridcell"><span class="outputText">04/05/2018 01:35:25</span></td>
 </tr>
 <tr data-ri="2" class="ui-widget-content ui-datatable-even" role="row">
  <td role="gridcell"><a href="#" id="form01:tableEx4:2:linkDesMov11" name="form01:tableEx4:2:linkDesMov11">SALIO A CIUDAD DESTINO</a>
   <div id="form01:tableEx4:2:tooltip_linkDesMov11" class="ui-tooltip ui-widget ui-widget-content ui-shadow ui-corner-all"> 
    <div> 
     <div style="display: none;">
      Tipo moviento: |2|
     </div>
     <table id="form01:tableEx4:2:j_id1394398698_531cdaa3" class="ui-panelgrid ui-widget dataTableEx" style="min-width: 200px; max-width: 400px;" role="grid">
      <tbody>
       <tr class="ui-widget-content" role="row">
        <td role="gridcell">
         <table id="form01:tableEx4:2:j_id1394398698_531cda89" class="ui-panelgrid ui-widget headerClass2" style="width: 100%; min-width: 200px; max-width: 400px;" role="grid">
          <tbody>
           <tr class="ui-widget-content" role="row"></tr>
           <tr class="ui-widget-content" role="row">
            <td role="gridcell"><span style="width: 100%" class="outputText">Novedad</span></td>
           </tr>
          </tbody>
         </table></td>
       </tr>
       <tr class="ui-widget-content" role="row">
        <td role="gridcell">
         <table id="form01:tableEx4:2:j_id1394398698_531cda7d" class="ui-panelgrid ui-widget headerClass2" style="width: 100%; min-width: 200px; max-width: 400px;" role="grid">
          <tbody>
           <tr class="ui-widget-content" role="row"></tr>
           <tr class="ui-widget-content" role="row">
            <td role="gridcell"><span style="width: 30%" class="outputText">Fecha Probable Entrega</span></td>
            <td role="gridcell"><span style="width: 70%" class="outputText">Descripción de la novedad</span></td>
           </tr>
          </tbody>
         </table></td>
       </tr>
       <tr class="ui-widget-content" role="row">
        <td role="gridcell">
         <table id="form01:tableEx4:2:j_id1394398698_531cda0f" class="ui-panelgrid ui-widget" style="width: 100%; min-width: 200px; max-width: 400px;" role="grid">
          <tbody>
           <tr class="ui-widget-content" role="row"></tr>
           <tr class="ui-widget-content" role="row">
            <td role="gridcell"><span style="width: 30%" class="outputText">07/04/2018</span></td>
            <td role="gridcell"><span style="width: 70%" class="outputText"></span></td>
           </tr>
          </tbody>
         </table></td>
       </tr>
      </tbody>
     </table> 
    </div>
   </div>

我可以得到td標簽,例如(表行):GUIA GENERADA,BOGOTA(CUNDINAMARCA),04/04/2018 17:33:05-INGRESO AL CENTRO LOGISTICO,BOGOTA(CUNDINAMARCA),04/05/2018 01:35: 25但在“ SALIO A CIUDAD DESTINO”行中,它顯示了我不需要的更多詳細信息。 只有我想要文字“ SALIO A CIUDAD DESTINO”。

也許這可以幫助您。

WebElement datewidget = driver
            .findElement(By.id("form01:tableEx4_data"));
    List<WebElement> rows = datewidget.findElements(By.tagName("tr"));
    List<WebElement> columns = datewidget.findElements(By.tagName("td"));

    for (WebElement cell : columns) {
        if (cell.getText().equals("SALIO A CIUDAD DESTINO")) {
            cell.click();
            break;
        }
    }

如果您使用的是Jsoup,下面的代碼可能會對您有所幫助。

 Element form = document.getElementById("form01:tableEx4_data");
 Elements tdList = form.getElementsByTag("td");
 for(Element td: tdList) {
       System.out.println(td.text()); // td.text() is different from td.html() 
  }

結果將如下所示:

GUIA GENERADA
BOGOTA (CUNDINAMARCA)
04/04/2018 17:33:05
INGRESO AL CENTRO LOGISTICO
BOGOTA (CUNDINAMARCA)
04/05/2018 01:35:25
SALIO A CIUDAD DESTINO
BOGOTA (CUNDINAMARCA)
04/05/2018 22:43:17
INGRESO AL CENTRO LOGISTICO
BARRANQUILLA (ATLANTICO)
04/06/2018 23:57:50
EN ZONA DE DISTRIBUCION
BARRANQUILLA (ATLANTICO)
04/09/2018 06:24:10
REPORTADO ENTREGADO
BARRANQUILLA (ATLANTICO)
04/09/2018 12:48:58
ENTREGA VERIFICADA
BARRANQUILLA (ATLANTICO)
04/09/2018 17:54:44

但是,如果您正在使用其他庫,則還可以使用正則表達式在'a'標記之間獲取文本。

String s = "<a href=\"https://www.servientrega.com/RastreoContado/RastreoContado2.faces?idGuia=2003159909&amp;idPais=1#\" id=\"form01:tableEx4:2:linkDesMov11\" name=\"form01:tableEx4:2:linkDesMov11\">SALIO A CIUDAD DESTINO</a>";
final Pattern pattern = Pattern.compile(">(.+?)<");
final Matcher matcher = pattern.matcher(s);
matcher.find();
System.out.println(matcher.group(1));

在這種情況下,結果將是:

SALIO A CIUDAD DESTINO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM