I'm trying to loop through different websites and scrape their values and push it to a global variable. I've tried different things but I seem unable to push val to dat. My goal is to have an object with the stock values of DAL and AAL.
var request = require("request"),
cheerio = require("cheerio");
var ticker = ["DAL", "AAL"];
var dat = []
for (var i = 0; i < ticker.length; i++) {
var url = "https://finance.yahoo.com/quote/"+ ticker[i] + "?p=" + ticker[i];
request(url, function (error, response, body) {
if (!error) {
var $ = cheerio.load(body);
var val = {
Ticker : ticker[i],
"Date" : new Date(),
PreviousClose : $("span[data-reactid='98']").text().toString(),
Open : $("span[data-reactid='103']").text().toString(),
Bid : $("span[data-reactid='108']").text().toString(),
Ask : $("span[data-reactid='113']").text().toString(),
DayRange : $("td[data-reactid='117']").text().toString(),
WeekRange_52 : $("td[data-reactid='121']").text().toString(),
Volume : $("span[data-reactid='126']").text().toString(),
AverageVolume : $("span[data-reactid='131']").text().toString(),
MarketCap : $("span[data-reactid='139']").text().toString(),
Beta5Months : $("span[data-reactid='144']").text().toString(),
PEratio : $("span[data-reactid='149']").text().toString(),
"EPS" : $("span[data-reactid='154']").text().toString()
};
} else {
return console.error(error);
}
});
dat.push(val);
}
console.log(dat);