Как очистить таблицу с изменением данных с помощью Cheerio в Node.js? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь очистить данные из таблицы на веб-сайте с постоянно меняющимися значениями . Таким образом, каждая строка может меняться день ото дня, но я хочу быть в состоянии очистить правильные данные. В настоящее время я использую библиотеку Cheerio, и я не знаком с ней, но вот что у меня есть:

const rp = require("request-promise");
const cheerio = require("cheerio");

let Italy = "";

async function main() {
    const result = await rp.get("https://www.worldometers.info/coronavirus/");
    const $ = cheerio.load(result);

    $("#main_table_countries > tbody:nth-child(2) > tr:nth-child(2)").each((i,el) => {
        const item = $(el).text();
        Italy = item;
    });
}

Итак, как вы можете видеть, это сводит данные с сайта Worldometer для случаев коронавируса в Италии , Однако за последние несколько дней позиция Италии менялась между 2 и 3. Это привело к тому, что моя программа получила неверную информацию. Это то, что я хотел бы исправить.

Вот ссылка на сайт Worldometer: https://www.worldometers.info/coronavirus/

Спасибо, Картик

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Используйте для этого: содержит псевдо:

$('tr:contains(Italy)').text()
//"  Italy  9,172   +1,797   463  +97  724    7,985  733   151.7 "
0 голосов
/ 09 марта 2020

Я реализовал то, что вы можете получить все tr's и l oop поверх них, чтобы получить все имена и добавить его в массив, а затем использовать индекс массива, чтобы найти любую страну, которую вы хотите

async function main() {
    let NamesArr=[]
    let CountryToFind= 'Italy'


    const result = await rp.get("https://www.worldometers.info/coronavirus/");
    const $ = cheerio.load(result);

    $('#main_table_countries').find('tbody').eq(0).find('tr').each((i,el)=>{
        NamesArr.push($(el).find('td').eq(0).text().trim())
    })

    let Index= NamesArr.indexOf(CountryToFind) + 1 

    $(`#main_table_countries > tbody:nth-child(2) > tr:nth-child(${Index})`).each((i,el) => {
        const item = $(el).text();
        console.log(item);
    });
}

main()

Это возвращает меня

CMD Result Image

Вы можете определенно изменить его, но этот способ делает ваш анализатор динамическим c, поскольку теперь вы можете искать любая страна.

...