简体   繁体   English

如何使用cheerio枚举html表

[英]how to enumerate html table using cheerio

I have a standard HTML table, but I cant seem to find anything in order to get a foothold and get started.我有一个标准的 HTML 表,但我似乎找不到任何东西来立足并开始。 My table is this:我的桌子是这样的:

    <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>

So standard stuff -- table, tbody, trs and tds所以标准的东西——table、tbody、trs 和 tds

I have tried我努力了

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

and I tried:我试过了:

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

The code below will help you loop through each tr.下面的代码将帮助您遍历每个 tr。 Also, take note that if you look for only "tds" for each "tr", you will not find "th".另外,请注意,如果您只为每个“tr”寻找“tds”,您将找不到“th”。 Thus, you also have to look for "ths".因此,您还必须寻找“ths”。 Take note that the code below is just an example.请注意,下面的代码只是一个示例。 Thus, no error check or data evaluation or anything like that.因此,没有错误检查或数据评估或类似的东西。

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());
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM