如何在完成SpookyJS脚本时响应请求



我需要定期登录并从特定站点抓取一些数据。我编写了一个CasperJS脚本在Heroku上运行,以便处理它。

下面是我希望能够做到的:

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

然后,在幽灵脚本的最后一步:

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

不幸的是,由于某种原因,传递给scrapeStuff的函数似乎不可能在.then()内。(找不到变量:callback)相反,我必须使用this.emit()并使用spooky.on监视它-您可以在这里看到如何做到这一点的示例。

使用emit的问题是,我想在请求时接收抓取页面的HTML。所以我想访问/scrape,然后等待10秒,而它的工作和接收页面,不调用它,假设它成功并请求另一个URL最终获得HTML。

这可以用SpookyJS完成吗?也许有一个更好的方法直接使用CasperJS

使用SpookyJS有三个层次的上下文:node (spooky), casper和网页本身。

你可以在3个上下文之间传递数据,但它将被序列化和非序列化,所以你仅限于纯JSON对象。

请参阅https://github.com/SpookyJS/SpookyJS/wiki/Introduction以获得有关其工作原理的详细介绍。

最新更新