首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Cheerio获取已动态填充的LI tat之间的数值

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

Stack Overflow用户
提问于 2019-06-25 11:32:33
回答 1查看 80关注 0票数 0

如何使用Cheerio获取由UL和class标记包装的li标记中的数字。

我有这个动态内容的html片段:

代码语言:javascript
复制
<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>
代码语言:javascript
复制
        let $ = cheerio.load(body);
        let msg = [];
        $('li.ball').each( (i, elm)=>{

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

      });
      console.log(msg);

我希望打印'21','6','32','14‘,结果却是这样的:

代码语言:javascript
复制
['<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。

EN

回答 1

Stack Overflow用户

发布于 2019-06-27 04:54:00

经过两天的努力,我正在回答我自己的问题

看起来对于动态内容,cheerio可能单独是不够的,通过组合使用puppeteer和cheerio,能够得到我想要的结果。

代码语言:javascript
复制
npm install puppeteer cheerio --save

以下是我在使用puppeteer和cheerio后的工作代码

代码语言:javascript
复制
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进行网络抓取的终极指南”这篇文章对实现我的结果非常有帮助:https://www.freecodecamp.org/news/the-ultimate-guide-to-web-scraping-with-node-js-daa2027dcd3/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56746461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档