如何使用Cheerio获取已动态填充的LI Tat之间的数字值

时间:2019-06-25 03:32:32

标签: node.js cheerio

我如何使用Cheerio在由UL和类标签包装的li标签中获取数字。

我有以下动态内容的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 :(得分:0)

经过2天的奋斗,我正在回答自己的问题

仅仅通过使用puppeteer和cheerio来满足动态内容的需求,可能不足以得到我想要的结果。

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

我发现“使用Node.js进行Web爬取的终极指南”一文对实现我的结果非常有帮助: https://www.freecodecamp.org/news/the-ultimate-guide-to-web-scraping-with-node-js-daa2027dcd3/