【问题标题】:How to respond to requests on completion of a SpookyJS script?如何在 SpookyJS 脚本完成后响应请求?
【发布时间】:2014-08-05 19:28:51
【问题描述】:

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

这是我希望能够做到的:

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

然后,在诡异脚本的最后一步:

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

不幸的是,由于某种原因,这似乎是不可能的,因为传递给scrapeStuff 的函数没有进入.then()。 (找不到变量:回调)相反,我必须使用 this.emit() 并使用 spooky.on 监视它 - 你可以看到 an example of how this is done here

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

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

【问题讨论】:

    标签: javascript node.js web-scraping phantomjs spookyjs


    【解决方案1】:

    它们是使用 SpookyJS 的 3 个上下文级别:节点(幽灵)、casper 和网页本身。

    您可以在 3 个上下文之间传递数据,但它会被序列化和反序列化,因此您仅限于纯 JSON 对象。

    查看https://github.com/SpookyJS/SpookyJS/wiki/Introduction了解其工作原理的详细介绍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多