Добрый день, я совсем новичок в nodeJs столкнулся с проблемой, гугления которой уже несколько дней так и не дает ответа. Делаю парсер одного сайта, часть данных сразу загружается, часть при помощи post запроса, при нажатии на кнопку. Проблема в следующем, удалось получить данные как одни, так и другие, а вот как сохранить полученные данные в переменную вне функции, не могу понять. Так же, не могу понять, почему не находит ничего в строчке console.log(rss)
var tress = require('tress');
var needle = require('needle');
var cheerio = require('cheerio');
var resolve = require('url').resolve;
var fs = require('fs');
var postt = require('./rq');
var URL = 'http://www.statarea.com/predictions';
var results = [];
var q = tress(function(url, callback){
needle.get(url, function(err, res){
if (err) throw err;
var $ = cheerio.load(res.body);
$('.match').each(function() {
var matchId = $(this).find('.match').attr('id');
var postData = postt.getPostData(matchId, function(data){
// Как получить переменную data вне этой функции?
var $ = cheerio.load(data);
var ress = $('.betinfo .halfcontainer .betinfoblock .header').text();
//почему оно не выводит ничего?
console.log(ress)
});
var tmpRes = [{
matchid: matchId,
hostteam: $(this)
.find('.hostteam .name a').text(),
guestteam: $(this)
.find('.guestteam .name a').text(),
hostgoals: $(this)
.find('.hostteam .goals').text(),
guestgoal: $(this)
.find('.guestteam .goals').text(),
time: $(this)
.find('.match .date').text(),
}];
results.push(tmpRes);
});
callback();
});
}, 10);
q.drain = function(){
fs.writeFileSync('./data.json', JSON.stringify(results, null, 4));
}
q.push(URL);
Вот модуль для пост запроса
var request = require('request');
var cheerio = require('cheerio');
exports.getPostData = function (matchid, callback){
var headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Referer': 'http://www.statarea.com/predictions',
'Accept': '*/*',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8',
'Origin': 'http://www.statarea.com',
'X-Requested-With': 'XMLHttpRequest'
};
var dataString = 'object=%7B%22action%22%3A%22getMatchBetInformation%22%2C%22matchid%22%3A%22'+matchid+'%22%7D';
var body = '';
var options = {
url: 'http://www.statarea.com/actions/controller/',
method: 'POST',
headers: headers,
body: dataString
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
callback(body);
}
else
console.log(error);
});
};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
С помощью google extensions хочу передать данные с одной вкладки в другую (с сайта1 в сайт2, но домены разные)localStorage не помогает, т
Здравствуйте! Есть компонент , подключенный через connect() к Redux-хранилищуОн имеет такой вид (упрощённый):
Карта уже находится у меня на htmlНужно выделить и в дальнейшем обработать объекты на карте(дом,улица,река,дорога) с помощью api