javascript - SpookyJS 脚本完成后如何响应请求?

标签 javascript node.js web-scraping phantomjs spookyjs

我需要定期登录并从特定站点抓取一些数据。 我编写了一个在 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。

最佳答案

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

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

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

关于javascript - SpookyJS 脚本完成后如何响应请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25146814/

相关文章:

javascript - AJAX post后连接按钮点击事件

javascript - Angular 创建数据持有者/存储库

api - 维基旅行 XML 树结构

python - 当我执行 GET 请求时(在 Python 中),我得到了翻译的文本。如何获取英文内容?

python - 如何在Scrapy中使用Xpath表达4位数字

javascript - 接收 props.children 不是函数

javascript - 为什么我上传zip文件时不能得到$_FILES [“file” ] [“tmp_name” ]?

node.js - Coffeescript 类语法在 Node 中不同?

node.js - 在 Heroku 中通过 Node 连接到 Redis 数据库

node.js - 使用类似操作符 inito MongoDB 的 Node JS Rest 服务