Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在完成SpookyJS脚本时响应请求?_Javascript_Node.js_Web Scraping_Phantomjs_Spookyjs - Fatal编程技术网

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

Javascript 如何在完成SpookyJS脚本时响应请求?,javascript,node.js,web-scraping,phantomjs,spookyjs,Javascript,Node.js,Web Scraping,Phantomjs,Spookyjs,我需要定期登录并从某个特定站点中获取一些数据。 为了解决这个问题,我编写了一个CasperJS脚本在Heroku上运行 以下是我希望能够做到的: app.get('/test', function(request, response) { scrapeStuff(function(data) { response.send(data); }); }); 然后,在幽灵脚本的最后一步: spooky.then(function() { callback(this.getHTML

我需要定期登录并从某个特定站点中获取一些数据。 为了解决这个问题,我编写了一个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对象

有关其工作原理的详细介绍,请参见