Как отвечать на запросы по завершению скрипта SpookyJS?

Мне нужно периодически входить в систему и очищать некоторые данные с определенного сайта. Я написал сценарий CasperJS для запуска на Heroku, чтобы позаботиться об этом.

Вот что я хочу сделать:

app.get('/test', function(request, response) {
  scrapeStuff(function(data) {
    response.send(data);
  });
});

Затем, на последнем этапе жуткого сценария:

spooky.then(function() {
  callback(this.getHTML());
});

К сожалению, по какой-то причине это не представляется возможным, так как функция, переданная в scrapeStuff, не попадает внутрь .then(). (не могу найти переменную: обратный вызов) Вместо этого я должен использовать this.emit() и отслеживать его с помощью spooky.on - вы можете видеть пример того, как это делается здесь.

Проблема с использованием emit заключается в том, что я хочу получить HTML-код очищенной страницы по запросу. Итак, я хочу получить доступ к /scrape, затем подождать 10 секунд, пока он работает, и получить страницу, а не вызывать ее, предположить, что это удалось, и запросить другой URL-адрес, чтобы наконец получить HTML.

Можно ли это сделать с помощью SpookyJS? Возможно, есть лучший способ напрямую использовать CasperJS.


person dsp_099    schedule 05.08.2014    source источник


Ответы (1)


Это 3 уровня контекста с использованием SpookyJS: узел (призрачный), каспер и сама веб-страница.

Вы можете передавать данные между тремя контекстами, но они будут сериализованы и несериализованы, поэтому вы ограничены чистым объектом JSON.

Подробнее см. https://github.com/SpookyJS/SpookyJS/wiki/Introduction. введение о том, как это работает.

person François Dispaux    schedule 20.05.2015