将“复杂”HTML表转换为JSON

时间:2017-05-06 18:48:55

标签: json node.js

所以最近几天我一直在努力找到解决这个问题的方法。(NodeJS)

我已经尝试了像cheerio html table等的东西,但是大多数都没有用,因为他们没有处理rowpans等。

基本上我需要一个像这样的HTML表:

<table class="k" border-width="3">
<tbody>
    <tr>
        <th width="50">
            XXXXXX </th>
        <th width="50">
            YYYY</th>
        <th width="50">
            </th>
        <th width="50">
            ZZZZZZZZ</th>
        <th width="50">
            QQQQ</th>
        <th width="50">
            LLLL</th>
        <th width="150">
        </th>
    </tr>
    <tr class="k">
        <th rowspan="11" class="k">
            11</th>
        <td>
            Data</td>
        <td>
            1</td>
        <td>
            Data2</td>
        <td>
        </td>
        <td>
            Data3</td>
        <td>
            Data4</td>
    </tr>
    <tr>
        <td>
           Data5</td>
        <td>
            2</td>
        <td>
            &nbsp;</td>
        <td>
            Data6</td>
        <td>
            &nbsp;</td>
        <td>
            &nbsp;Data7</td>
    </tr>
    <tr>
        <td>
            &nbsp;Data8</td>
        <td>
            2</td>
        <td>
            &nbsp;</td>
        <td>
        </td>
        <td>
            &nbsp;</td>
        <td>
            &nbsp;Data10</td>
    </tr>
    <tr>
        <td>
            &nbsp;Foo</td>
        <td>
            3</td>
        <td>
            &nbsp;Foo</td>
        <td>
        </td>
        <td>
            &nbsp;Foo</td>
        <td>
            &nbsp;Foo</td>
    </tr>
    <tr>
        <td>
            &nbsp;Foo</td>
        <td>
            3</td>
        <td>
            &nbsp;Foo</td>
        <td>
        </td>
        <td>
            &nbsp;Foo</td>
        <td>
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            &nbsp;Foo</td>
        <td>
            4</td>
        <td>
            &nbsp;Foo</td>
        <td>
        </td>
        <td>
            &nbsp;Foo</td>
        <td>
            &nbsp;</td>
    </tr>
    <tr>
        <td>
            &nbsp;Foo</td>
        <td>
            4</td>
        <td>
            &nbsp;</td>
        <td>
        </td>
        <td>
            &nbsp;</td>
        <td>
            &nbsp;Foo</td>
    </tr>

</tbody>

转换为类似的内容:

{
"XXXXXX": "11",
"YYYY": "Data",
"SSS": "1",
"ZZZZZZZZ": "Data2",
"QQQQ": "",
"LLLL": "Data3",
"Data4": ""}

表格中的每一行

1 个答案:

答案 0 :(得分:0)

在NodeJS中执行此操作的最简单方法是使用npm模块html-table-to-json

const HtmlTableToJson = require('html-table-to-json');
const html = '' # Paste your HTML table

const jsonTables = new HtmlTableToJson(html);

console.log(jsonTables['results']);