Javascript 如何在循环内移动URL检查
我有一个剧本,我正在为板球联赛做准备。我有一个问题,当记分板开始,如果他们没有把网址到现场比赛足够快,那么他们必须重新启动。我如何让它在每次运行时检查文件的新URL?我试图向下移动它,但随后抛出了错误,因为没有定义getDataJavascript 如何在循环内移动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
// 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();
},间隔);
<