Как с помощью Cheerio получить числовое значение между LI-татами, которые были заполнены динамически - PullRequest
0 голосов
/ 25 июня 2019

Как мне с помощью Cheerio получить номер в теге li, который обернут UL и тегами класса.

У меня есть этот HTML-фрагмент динамического содержимого:

<ul class="numbers">
  <li class="ball winNum1">21</li>
  <li class="ball winNum2">6</li>
  <li class="ball winNum3">32</li>
  <li class="ball winNum4">14</li>
</ul>
        let $ = cheerio.load(body);
        let msg = [];
        $('li.ball').each( (i, elm)=>{

        msg[i] = $(elm).toString().trim();

      });
      console.log(msg);

Я ожидаю напечатать ['21', '6', '32', '14'], вместо этого я получу это:

['<li class="ball winNum1"></li>',
'<li class="ball winNum2"></li>',
'<li class="ball winNum3"></li>',
'<li class="ball winNum4"></li>']

и в теге li нет чисел 21, 6, 32 или 14.

1 Ответ

0 голосов
/ 26 июня 2019

Я отвечаю на свой вопрос после 2 дней борьбы

Похоже, что для динамического содержания одного только cheerio может быть недостаточно, если использовать кукловода и cheerio в комбинации, чтобы получить результат, который я искалfor.

npm install puppeteer cheerio --save

Вот мой рабочий код после использования puppeteer и cheerio

puppeteer
  .launch()
  .then(function(browser) {
    return browser.newPage();
  })
  .then(function(page) {
    return page.goto(url).then(function() {
      return page.content();
    });
  })
  .then(function(html) {
    $('li.ball', html).each(function() {
      console.log($(this).text());
    });
  })
  .catch(function(err) {
    //handle error
  });

. Мне показалась статья "Ultimate Guide to Web Scraping with Node.js" очень полезной для достижения моих целей.результат: https://www.freecodecamp.org/news/the-ultimate-guide-to-web-scraping-with-node-js-daa2027dcd3/

...