Node JS проблема с получением данных из post запроса

144
19 февраля 2018, 04:19

Добрый день, я совсем новичок в 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); 
    });   
 
 
};

READ ALSO
С помощью google extensions хочу передать данные с одной вкладки в другую

С помощью google extensions хочу передать данные с одной вкладки в другую

С помощью google extensions хочу передать данные с одной вкладки в другую (с сайта1 в сайт2, но домены разные)localStorage не помогает, т

119
Тестирование React-компонентов

Тестирование React-компонентов

Здравствуйте! Есть компонент , подключенный через connect() к Redux-хранилищуОн имеет такой вид (упрощённый):

127
Обработка объектов на Яндекс картах

Обработка объектов на Яндекс картах

Карта уже находится у меня на htmlНужно выделить и в дальнейшем обработать объекты на карте(дом,улица,река,дорога) с помощью api

105