конвертировать HTML ответ в массив или объект в nodejs - PullRequest
0 голосов
/ 04 марта 2020

Я написал сервер express, который работает с API Zaubacorp.com и получает следующий результат. В результате получается строка

Результат от API:

                <div class="show" align="left" id="company/CHOUDH/U65999MP1985PTC003043">CHOUDH </div>

                <div class="show" align="left" id="company/CHOPRA/U45201CT1982PTC001899">CHOPRA </div>

                <div class="show" align="left" id="company/CHOUDH/U72200UP1996PLC019258">CHOUDH </div>

                <div class="show" align="left" id="company/CHOROSEN-LIMITED/U99999MH1955PLC009659">CHOROSEN LIMITED </div>

                <div class="show" align="left" id="company/CHOLAI-FOUNDATION/U85300TN2019NPL127317">CHOLAI FOUNDATION </div>

Теперь, после получения API, мне нужно отправить его в Реагирующий интерфейс. Мне нужно извлечь из него указанное значение c, например, идентификатор и название компании, и отправить его во внешний интерфейс ReactJS. Я не могу извлечь значение из данного формата строки.

Вот мой Express контроллер

post_a_product =  async (req, res, next)=>{
    console.log(req.body.query);
    const query = {
        "search": req.body.query,
        "filter":"company"
    }
   var result = await axios.post("https://www.zaubacorp.com/custom-search", query)

    stringData = result.data
try {
    console.log('====================================');
    console.log(stringData);
    console.log('====================================');

} catch (error) {
    console.error(error)
}
    res.end("We have sent the response")

Как извлечь идентификаторы и название компании из заданной строки в формате для отправки на веб-интерфейс ?

1 Ответ

1 голос
/ 04 марта 2020

Вам нужно использовать какой-то html парсер. Одним из них является https://www.npmjs.com/package/node-html-parser. Код будет выглядеть так:

const {parse} = require('node-html-parser');
console.log(JSON.stringify(parse(result.data)));

ответ будет правильным JSON что-то вроде

{
    "childNodes": [{
        "childNodes": [{
            "childNodes": [],
            "nodeType": 3,
            "rawText": "CHOUDH "
        }],
        "tagName": "div",
        "rawAttrs": "class=\"show\" align=\"left\" id=\"company/CHOUDH/U65999MP1985PTC003043\"",
        "parentNode": null,
        "classNames": ["show"],
        "nodeType": 1,
        "id": "company/CHOUDH/U65999MP1985PTC003043"
    }, {
        "childNodes": [],
        "nodeType": 3,
        "rawText": "\n\t\t\t\t\t\t\t\n\t\t\t\t"
    }, {
        "childNodes": [{
            "childNodes": [],
            "nodeType": 3,
            "rawText": "CHOPRA "
        }],
        "tagName": "div",
        "rawAttrs": "class=\"show\" align=\"left\" id=\"company/CHOPRA/U45201CT1982PTC001899\"",
        "parentNode": null,
        "classNames": ["show"],
        "nodeType": 1,
        "id": "company/CHOPRA/U45201CT1982PTC001899"
    }, {
        "childNodes": [],
        "nodeType": 3,
        "rawText": "\n\t\t\t\t\t\t\t\n\t\t\t\t"
    }, {
        "childNodes": [{
            "childNodes": [],
            "nodeType": 3,
            "rawText": "CHOUDH "
        }],
        "tagName": "div",
        "rawAttrs": "class=\"show\" align=\"left\" id=\"company/CHOUDH/U72200UP1996PLC019258\"",
        "parentNode": null,
        "classNames": ["show"],
        "nodeType": 1,
        "id": "company/CHOUDH/U72200UP1996PLC019258"
    }, {
        "childNodes": [],
        "nodeType": 3,
        "rawText": "\n\t\t\t\t\t\t\t\n\t\t\t\t"
    }, {
        "childNodes": [{
            "childNodes": [],
            "nodeType": 3,
            "rawText": "CHOROSEN LIMITED "
        }],
        "tagName": "div",
        "rawAttrs": "class=\"show\" align=\"left\" id=\"company/CHOROSEN-LIMITED/U99999MH1955PLC009659\"",
        "parentNode": null,
        "classNames": ["show"],
        "nodeType": 1,
        "id": "company/CHOROSEN-LIMITED/U99999MH1955PLC009659"
    }, {
        "childNodes": [],
        "nodeType": 3,
        "rawText": "\n\t\t\t\t\t\t\t\n\t\t\t\t"
    }, {
        "childNodes": [{
            "childNodes": [],
            "nodeType": 3,
            "rawText": "CHOLAI FOUNDATION "
        }],
        "tagName": "div",
        "rawAttrs": "class=\"show\" align=\"left\" id=\"company/CHOLAI-FOUNDATION/U85300TN2019NPL127317\"",
        "parentNode": null,
        "classNames": ["show"],
        "nodeType": 1,
        "id": "company/CHOLAI-FOUNDATION/U85300TN2019NPL127317"
    }],
    "tagName": null,
    "rawAttrs": "",
    "parentNode": null,
    "classNames": [],
    "nodeType": 1,
    "valid": true
}

В нем есть вся необходимая информация, которая вам нужна. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...