Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在循环内移动URL检查_Javascript_Node.js - Fatal编程技术网

Javascript 如何在循环内移动URL检查

Javascript 如何在循环内移动URL检查,javascript,node.js,Javascript,Node.js,我有一个剧本,我正在为板球联赛做准备。我有一个问题,当记分板开始,如果他们没有把网址到现场比赛足够快,那么他们必须重新启动。我如何让它在每次运行时检查文件的新URL?我试图向下移动它,但随后抛出了错误,因为没有定义getData // Libs const Nightmare = require('nightmare') const cheerio = require('cheerio'); const fs = require('fs'); //Get URL from text docum

我有一个剧本,我正在为板球联赛做准备。我有一个问题,当记分板开始,如果他们没有把网址到现场比赛足够快,那么他们必须重新启动。我如何让它在每次运行时检查文件的新URL?我试图向下移动它,但随后抛出了错误,因为没有定义getData

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

//Get URL from text document
var data = fs.readFileSync('/var/www/html/scoreboard/dataUrl.txt', 'utf8');
console.log(data.toString());
const dataUrl = data.toString();
const url = dataUrl;
const interval = 10*1000; // every 10 second


let getData = html => {
  const $ = cheerio.load(html);

  let defaultBatsman = {
    Name: '',
    Runs: '0',
    Balls: '0',
    StrikeRate: '0.0',
    currentlyOnStrike: false,
  };

  let defaultBowler = {
    Name: '',
    CurrentOverBalls: '',
    CurrentOverGivenRuns: '',
    Wickets: '',
    EconomyRate: '',
  };

  let mvccLiveScore = {
    batsman1: {...defaultBatsman},
    batsman2: {...defaultBatsman},
    bowler: {...defaultBowler},
    battingOrder: '',
    battingTeam: '',
    lastEightBalls: [],
    lastUpdated: '0',
    overs: '0',
    requiredRunRate: '0',
    requiredToWin: 'TBD',
    runRate: '0',
    score: '0',
    target: '0',
    wickets: '0',
    score2: '0'
  };

  $('div.col-md-6 div.container-fluid div.row').each((i, elem) =>{
    //console.log('Inside col-md-6');
    if( i === 0 ){
      mvccLiveScore.battingTeam = $(elem).find('div.row:nth-child(1) div:nth-child(1) h5').html();
      mvccLiveScore.score = $(elem).find('div.row:nth-child(1) div:nth-child(2) h5').text().split('/')[0];
      mvccLiveScore.wickets = $(elem).find('div.row:nth-child(1) div:nth-child(2) h5').text().split('/')[1];
    }
    else if (i===1){
      let targetOrTotal = $(elem).find('div.col-xs-8.text-left b').html();
      if(targetOrTotal && targetOrTotal.split(':')[0] === 'Target'){
        mvccLiveScore.battingOrder = 2;
        mvccLiveScore.target = targetOrTotal.split(':')[1].trim();
        mvccLiveScore.requiredToWin = $(elem).find('div+div.col-xs-4.text-right b').html();
        //mvccLiveScore.requiredRunRate = $(elem).find('div+div.col-xs-4.text-right').text().split('\n')[4].split(':')[1].trim();
        //mvccLiveScore.score2 = $(elem).find("div.row:nth-child(1) div:nth-child(2) b").html()
      }
      else{
        mvccLiveScore.battingOrder = 1;
      }
      mvccLiveScore.overs = $(elem).find('div.col-xs-8.text-left').text().split('\n')[5].split('|')[0].split(':')[1].trim();
      mvccLiveScore.runRate = $(elem).find('div.col-xs-8.text-left').text().split('\n')[5].split('|')[1].split(':')[1].trim();
    }
    else if(i === 3){
      $(elem).find('div.row:nth-child(4) div:nth-child(1) h4 span').each(function(index){
          mvccLiveScore.lastEightBalls.push($( this ).text().trim());
      });
    }
  });

  $('div.col-md-6+div.col-md-6 div.container-fluid div.row').each((i, elem) => {
    if( i === 0 ){
      mvccLiveScore.batsman1.Name = $(elem).find('div.col-xs-9.capitalized').text().trim();
      mvccLiveScore.batsman1.currentlyOnStrike = mvccLiveScore.batsman1.Name.indexOf('*') > -1;
      mvccLiveScore.batsman1.Runs = $(elem).find('div+div.col-xs-3.text-right').text().trim();
    }
    else if( i === 1 ){
        mvccLiveScore.batsman1.Balls = $(elem).find('div.col-xs-12').text().trim().split('|')[0].split(':')[1].trim();
        mvccLiveScore.batsman1.StrikeRate = $(elem).find('div.col-xs-12').text().trim().split('|')[1].split(':')[1].trim();
    }
    else if( i === 2 ){
        mvccLiveScore.batsman2.Name = $(elem).find('div.col-xs-9.capitalized').text().trim();
        mvccLiveScore.batsman2.currentlyOnStrike = mvccLiveScore.batsman2.Name.indexOf('*') > -1;
        mvccLiveScore.batsman2.Runs = $(elem).find('div+div.col-xs-3.text-right').text().trim();

    }
    else if( i === 3 ){
      mvccLiveScore.batsman2.Balls = $(elem).find('div.col-xs-12').text().trim().split('|')[0].split(':')[1].trim();
      mvccLiveScore.batsman2.StrikeRate = $(elem).find('div.col-xs-12').text().trim().split('|')[1].split(':')[1].trim();
    }
    else if( i === 4 ){
      mvccLiveScore.bowler.Name = $(elem).find('div.col-xs-9.capitalized').text().trim();
      mvccLiveScore.bowler.CurrentOverBalls = $(elem).find('div+div.col-xs-3.text-right').text().trim();
    }
    else if( i === 5 ){
      mvccLiveScore.bowler.CurrentOverGivenRuns = $(elem).find('div.col-xs-12').text().trim().split('|')[0].split(':')[1].trim();
      mvccLiveScore.bowler.Wickets = $(elem).find('div.col-xs-12').text().trim().split('|')[1].split(':')[1].trim();
      mvccLiveScore.bowler.EconomyRate = $(elem).find('div.col-xs-12').text().trim().split('|')[2].split(':')[1].trim();
    }
  });

  mvccLiveScore.lastUpdated = new Date().toLocaleString();
  console.log(mvccLiveScore);

  let data = '<html><head><script>setTimeout(function(){window.location.reload(1);}, 5000)</script></head><body>'
  + 'Battimg Team: '+ mvccLiveScore.battingTeam + '</br>'
  + 'Score: ' + mvccLiveScore.score + '</br>'
  + 'Last Updated on: '+mvccLiveScore.lastChecked
  +'</body></html>';
fs.writeFileSync('mvccLiveScore.html', data);
fs.writeFileSync('mvccLiveScore.json', JSON.stringify(mvccLiveScore, null, 2), );
}


function runMvccScrapper(){
  console.log('Starting the scrapping');

  const nightmare = Nightmare({ show: false })
  nightmare
  .goto(url)
  .wait('body')
  .wait('div#summaryTab.tab-pane.fade.in.table-responsive.borderless.active')
  .evaluate(() => document.querySelector('div.container-fluid.liveMatchSummaryTab div.row').innerHTML)
  .end()
  .then(response => {
    getData(response);
  }).catch(err => {
    console.log(err);
  }).then(()=>{
    console.log('Scrapping is done');
    console.log('/****************************/');
  });
}

setInterval(function(){
  console.log('/****************************/');
  runMvccScrapper();
},interval);

//Libs
常量梦魇=需要('梦魇')
const cheerio=需要(“cheerio”);
常数fs=要求('fs');
//从文本文档获取URL
var data=fs.readFileSync('/var/www/html/scoreboard/dataUrl.txt',utf8');
log(data.toString());
const dataUrl=data.toString();
consturl=dataUrl;
常数间隔=10*1000;//每10秒
让getData=html=>{
const$=cheerio.load(html);
让默认击球手={
名称:“”,
运行:“0”,
球:“0”,
删除:“0.0”,
我的意思是:错,
};
设defaultBowler={
名称:“”,
当前超买:“”,
CurrentOverGivenRuns:“”,
威克茨:“,
经济体:“,
};
让mvccLiveScore={
击球手1:{…默认击球手},
击球手2:{…默认击球手},
保龄球手:{…默认保龄球手},
板条顺序:“”,
battingTeam:“”,
最后八个球:[],
上次更新:“0”,
结束:“0”,
requiredRunRate:“0”,
requiredToWin:‘待定’,
运行速率:“0”,
分数:“0”,
目标:“0”,
wickets:'0',
得分2:'0'
};
$('div.col-md-6 div.container-fluid div.row')。每个((i,elem)=>{
//控制台日志(“col-md-6内部”);
如果(i==0){
mvccLiveScore.battingTeam=$(elem).find('div.row:nth child(1)div:nth child(1)h5').html();
mvccLiveScore.score=$(elem).find('div.row:nth child(1)div:nth child(2)h5').text().split('/')[0];
mvccLiveScore.wickets=$(elem).find('div.row:nth child(1)div:nth child(2)h5').text().split('/')[1];
}
else如果(i==1){
让targetTortotal=$(elem).find('div.col-xs-8.text-left b').html();
如果(targetTorTotal&&targetTorTotal.split(“:”)[0]=“Target”){
mvccLiveScore.battingOrder=2;
mvccLiveScore.target=targetTorTotal.split(“:”)[1].trim();
mvccLiveScore.requiredToWin=$(elem).find('div+div.col-xs-4.text-right b').html();
//mvccLiveScore.requiredRunRate=$(elem).find('div+div.col-xs-4.text right').text().split('\n')[4]。split(':')[1]。trim();
//mvccLiveScore.score2=$(elem).find(“div.row:nth child(1)div:nth child(2)b”).html()
}
否则{
mvccLiveScore.battingOrder=1;
}
mvccLiveScore.overs=$(elem).find('div.col-xs-8.text left').text().split('\n')[5]。split('|')[0]。split(':')[1]。trim();
mvccLiveScore.runRate=$(elem).find('div.col-xs-8.text left').text().split('\n')[5]。split('.')[1]。split(':')[1]。trim();
}
否则如果(i==3){
$(elem).find('div.row:nth child(4)div:nth child(1)h4 span')。每个(函数(索引){
mvccLiveScore.lastEightBalls.push($(this.text().trim());
});
}
});
$('div.col-md-6+div.col-md-6 div.container-fluid div.row')。每个((i,elem)=>{
如果(i==0){
mvccLiveScore.batsman1.Name=$(elem).find('div.col-xs-9.capitalized').text().trim();
mvccLiveScore.batsman1.currentlyOnStrike=mvccLiveScore.batsman1.Name.indexOf('*')>-1;
mvccLiveScore.batsman1.Runs=$(elem).find('div+div.col-xs-3.text right').text().trim();
}
else如果(i==1){
mvccLiveScore.batsman1.Balls=$(elem).find('div.col-xs-12').text().trim().split('|')[0]。split(':')[1]。trim();
mvccLiveScore.batsman1.StrikeRate=$(elem).find('div.col-xs-12').text().trim().split('|')[1].split(':')[1].trim();
}
else如果(i==2){
mvccLiveScore.batsman2.Name=$(elem).find('div.col-xs-9.capitalized').text().trim();
mvccLiveScore.batsman2.currentlyOnStrike=mvccLiveScore.batsman2.Name.indexOf('*')>-1;
mvccLiveScore.batsman2.Runs=$(elem).find('div+div.col-xs-3.text right').text().trim();
}
否则如果(i==3){
mvccLiveScore.batsman2.Balls=$(elem).find('div.col-xs-12').text().trim().split('.')[0]。split(':')[1]。trim();
mvccLiveScore.batsman2.StrikeRate=$(elem).find('div.col-xs-12').text().trim().split('|')[1]。split(':')[1]。trim();
}
else如果(i==4){
mvccLiveScore.bowler.Name=$(elem.find('div.col-xs-9.capitalized').text().trim();
mvccLiveScore.bowler.CurrentOverBalls=$(elem).find('div+div.col-xs-3.text right').text().trim();
}
否则如果(i==5){
mvccLiveScore.bowler.CurrentOverGivenRuns=$(elem).find('div.col-xs-12').text().trim().split('|')[0]。split(':')[1]。trim();
mvccLiveScore.bowler.Wickets=$(elem).find('div.col-xs-12').text().trim().split('.')[1]。split(':')[1]。trim();
mvccLiveScore.bowler.EconomyRate=$(elem).find('div.col-xs-12').text().trim().split('.')[2].split(':')[1].trim();
}
});
mvccLiveScore.lastUpdated=新日期().toLocaleString();
console.log(mvccLiveScore);
let data='setTimeout(function(){window.location.reload(1);},5000)'
+“Battimg团队:”+mvccLiveScore.battingTeam+”
' +'分数:'+mvccLiveScore.Score+'
' +“上次更新日期:”+mvccLiveScore.lastChecked +''; fs.writeFileSync('mvccLiveScore.html',data); writeFileSync('mvccLiveScore.json',json.stringify(mvccLiveScore,null,2),); } 函数runmvccscraster(){ console.log(“开始报废”); 常量噩梦=噩梦({show:false}) 噩梦 .goto(url) .wait(‘body’) .wait('div#summaryTab.tab pane.fade.in.table responsive.borderless.active') .evaluate(()=>document.querySelector('div.container-fluid.livematchsummary选项卡div.row').innerHTML) (完) 。然后(响应=>{ 获取数据(响应); }).catch(错误=>{ 控制台日志(err); }).然后(()=>{ console.log(“报废完成”); console.log('/***********************************/'); }); } setInterval(函数(){ console.log('/***********************************/'); runmvccscraster(); },间隔);
<