微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 NodeJS、Nightmare 和 Cheerio 抓取 JS 站点

如何解决使用 NodeJS、Nightmare 和 Cheerio 抓取 JS 站点

我正在尝试抓取一个网站来获取每个团队的分数。我遇到了脚本返回空内容的问题。我看不出哪里出错了,正在寻求帮助。

JS:

const Nightmare = require('nightmare')
const cheerio = require('cheerio');
const fs = require('fs');


const nightmare = Nightmare({ show: true })
const url = 'https://www.mscl.org/live/scorecard/ed7941919f69b0e11e800fef/mHcehsPR9S86T3zQv';

nightmare
  .goto(url)
  .wait('body')
  .wait('div#summaryTab.tab-pane.fade.in.table-responsive.borderless.active')
  .evaluate(() => document.querySelector('div.col-md-6').innerHTML)
  .end()
  .then(response => {
    console.log(getData(response));
  }).catch(err => {
    console.log(err);
  });

  let getData = html => {
    data = [];
    const $ = cheerio.load(html);
    $('div').each((i,elem) => {
        if(i === 0 ){
          console.log($(elem).find('nth-child(1)').html());
          
        }
    });
    return data;

  }

我正在抓取的 html 在这里https://pastebin.com/R6syWDwD

分数所在的那一行:30 和 32

      <div class="col-md-6">
        <b>40 Overs Match</b><br>
        <b>MVCC Combined</b> won the toss and chose Batting<br>
        <b>Umpires: </b>No umpires were selected<br>
        <b>Date: </b> 3/24/2021,5:00:00 PM<br>
        <b>Ground: </b>Acton Field 1<br>
        <b>Result: TBD</b><br>
        <b>MoM: </b> <br>
        <hr>
        
        <p><b>MVCC COMBINED XI - 147/10</b> (<b>O:</b> 12.5 | <b>RR:</b> 11.45)</p>
        
        <p><b>MVCC United XI - 23/1</b> (<b>O:</b> 2.0 | <b>RR:</b> 11.50)</p>
        <hr>
      </div>

当我运行它时,它什么都不返回。也没有显示错误。我错过了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?