как перечислить html таблицу используя cheerio - PullRequest
0 голосов
/ 14 октября 2019

У меня есть стандартная таблица HTML, но я не могу найти ничего, чтобы закрепиться и начать. Моя таблица такая:

    <div id="seriesDiv" style="margin-top: 0px;">
          <table class="tableFile2" summary="Results">
             <tbody><tr>
                <th scope="col" width="7%">Filings</th>
                <th scope="col" width="10%">Format</th>
                <th scope="col">Description</th>
                <th scope="col" width="10%">Filing Date</th>
                <th scope="col" width="15%">File/Film Number</th>
             </tr>
    <tr>
    <td nowrap="nowrap">4</td>
    <td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119051031/0001209191-19-051031-index.htm" id="documentsbutton">&nbsp;Documents</a></td>
    <td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-051031 Size: 9 KB            </td>
                <td>2019-09-27</td>
             <td></td>
             </tr>
    <tr class="blueRow">
    <td nowrap="nowrap">4</td>
    <td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119050363/0001209191-19-050363-index.htm" id="documentsbutton">&nbsp;Documents</a></td>
    <td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-050363 Size: 50 KB            </td>
                <td>2019-09-20</td>
             <td></td>
             </tr>

Итак, стандартные вещи - таблица, tbody, trs и tds

Я пробовал

var rows = $("#seriesDiv").find("table");
console.log("in front loop ", rows.length);
for (var i = 0; rows.length; i++) {
    console.log("inside loop");
}

и пробовал:

var rows = $(".tableFile2").find("tr");
```

Can someone please show me how to do this?  I want to loop through TRs, and for each TR, I want to loop through TDs.

thank you

1 Ответ

1 голос
/ 14 октября 2019

Приведенный ниже код поможет вам перебрать все тр. Также обратите внимание, что если вы ищете только «tds» для каждого «tr», вы не найдете «th». Таким образом, вы также должны искать "ths". Обратите внимание, что приведенный ниже код является лишь примером. Таким образом, ни проверка ошибок, ни оценка данных, ни что-либо подобное.

const cheerio = require('cheerio');
var html = `
<div id="seriesDiv" style="margin-top: 0px;">
      <table class="tableFile2" summary="Results">
         <tbody><tr>
            <th scope="col" width="7%">Filings</th>
            <th scope="col" width="10%">Format</th>
            <th scope="col">Description</th>
            <th scope="col" width="10%">Filing Date</th>
            <th scope="col" width="15%">File/Film Number</th>
         </tr>
<tr>
<td nowrap="nowrap">4</td>
<td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119051031/0001209191-19-051031-index.htm" id="documentsbutton">&nbsp;Documents</a></td>
<td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-051031 Size: 9 KB            </td>
            <td>2019-09-27</td>
         <td></td>
         </tr>
<tr class="blueRow">
<td nowrap="nowrap">4</td>
<td nowrap="nowrap"><a href="/Archives/edgar/data/1087294/000120919119050363/0001209191-19-050363-index.htm" id="documentsbutton">&nbsp;Documents</a></td>
<td class="small">Statement of changes in beneficial ownership of securities<br>Acc-no: 0001209191-19-050363 Size: 50 KB            </td>
            <td>2019-09-20</td>
         <td></td>
         </tr>
`;

const $ = cheerio.load(html);

var tables = $("#seriesDiv").find("table");
var trs = $(tables).find("tr");

for ( let i = 0; i < trs.length; i++ ){
    let tds = $(trs[i]).find("td");
    let ths = $(trs[i]).find("th");
    for ( let j = 0; j < ths.length; j++ ){
      console.log($(ths[j]).text());
    }
    for ( let j = 0; j < tds.length; j++ ){
      console.log($(tds[j]).text());
    }
}
...