[英]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'
,並開始從那里提取細胞。 然后,您可以使用.filter
和String.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.