簡體   English   中英

如果另一列包含目標詞,則從一個表列中收集數據

[英]Scraping data from one table column if another column contains target words

我想使用javascript / jQuery搜索html表。

如果其中一個單元格包含一個將總是在第五列中的詞,那么我希望從第一列開始輸入日期。

我已附上我要搜索的表格的示例。

我在想我必須在桌子上做一個正則表達式,然后捕獲包含文本的單元格?

 <table cellspacing="0" cellpadding="1" rules="all" border="1" id="dgNoticeAudit" style="border-color:#CCCCCC;width:98%;border-collapse:collapse;"> <tbody> <tr class="labelbox" align="center" valign="middle"> <td>21/02/2019 17:32:26</td> <td>ImportDocument WS</td> <td>EXTCORRES</td> <td>CHLGLOG</td> <td align="left" style="width:250px;">An externally printed NFD document has been imported.</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 13:57:12</td> <td>BSPR1R</td> <td>NOTE</td> <td>CHLGLOG</td> <td align="left" style="width:250px;">Note inserted</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 13:55:57</td> <td>BSPR1R</td> <td>CANCLLEDT</td> <td>CHLGLOG</td> <td align="left" style="width:250px;">Cancelled task with Id: TF04563335 - Task type: Enforcement Review - Letter</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 13:55:57</td> <td>BSPR1R</td> <td>CLOSEDT</td> <td>CHLGLOG</td> <td align="left" style="width:250px;">Closed task with Id: TF04563335 - Task type: Enforcement Review - Letter</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 11:06:21</td> <td>bspvxs</td> <td>CLOSEDT</td> <td>CHLGLOG</td> <td align="left" style="width:250px;">Closed task with Id: TF04562943 - Task type: Enforcement Review Applications</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 11:03:59</td> <td>bspvxs</td> <td>LOGCHLG</td> <td>CHLGLOG</td> <td align="left" style="width:250px;">Challenge logged, reason code: E_SPCIRCUM</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 11:02:46</td> <td>bspvxs</td> <td>RHOLD</td> <td>NFDP</td> <td align="left" style="width:250px;">Release hold</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>19/02/2019 11:02:05</td> <td>bspvxs</td> <td>HOLD</td> <td>NFDP</td> <td align="left" style="width:250px;">Hold info modified - CORROHOLD - Upto Mar 5 2019 </td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>18/02/2019 17:40:07</td> <td>CivicaUser</td> <td>NEWT</td> <td>NFDP</td> <td align="left" style="width:250px;">Created task with Id: TF04563335 - Task type: Enforcement Review - Letter</td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> <tr class="labelbox" align="center" valign="middle"> <td>18/02/2019 16:56:02</td> <td>CivicaUser</td> <td>HOLD</td> <td>NFDP</td> <td align="left" style="width:250px;">Hold all actions - CORROHOLD - Upto Mar 4 2019 </td> <td align="right">0.00</td> <td align="right">397.30</td> </tr> </tbody> </table> 

可以將所有選擇tr的有以下選擇'#dgNoticeAudit tbody tr' ,並開始從那里提取細胞。 然后,您可以使用.filterString.includes過濾包含所描述單詞的數據。

let rows = document.querySelectorAll('#dgNoticeAudit tbody tr');
var data = Array.prototype.map.call(rows, tr => {
    let td = tr.cells[4]; // index 4 for the 5th column
    return td.innerHTML || td.innerText || '';
});

console.log(data);
/* result will be = [
    "An externally printed NFD document has been imported.",
    "Note inserted",
    "Cancelled task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
    "Closed task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
    "Closed task with Id: TF04562943 - Task type: Enforcement Review Applications↵",
    "Challenge logged, reason code: E_SPCIRCUM",
    "Release hold",
    "Hold info modified - CORROHOLD - Upto Mar 5 2019 ",
    "Created task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
    "Hold all actions - CORROHOLD - Upto Mar 4 2019 "
]; */

    const words = 'Closed task'; // Your searching words
    let filteredData = data.filter(sentence => sentence.includes(words));
    console.log(filteredData);
    /*result will be = [
        "Closed task with Id: TF04563335 - Task type: Enforcement Review - Letter↵",
        "Closed task with Id: TF04562943 - Task type: Enforcement Review Applications↵",
    ]*/

暫無
暫無

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

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