【问题标题】:How to send data back to node from casperjs?如何从 casperjs 将数据发送回节点?
【发布时间】:2015-04-11 09:05:39
【问题描述】:

如何从 nodeJS 中通过execfile 启动的进程将数据发送回节点?最好是 JSON 格式。

这就是我的代码现在的样子:

//index.js NodeJS
var execFile = require('child_process').execFile;
var express = require('express');

app.get('/', function(req, res) {
    var lchecker = execFile('/usr/local/bin/casperjs', [myprogram, myargs]);
    lchecker.stdout.on('data', function(data) {
        var dataObject = JSON.parse(data); //This throws an error.
    }); 
});

我正在调用的 casperjs 脚本返回类似 JSON 的字符串,如下所示:

console.log("[{href: targetLink.href, anchor: targetLink.anchor, isLive: 0, isFollowed: null}]");

这是我得到的错误

当我尝试解析类似 JSON 的字符串时,我收到一条错误消息:

19 Jun 16:46:43 - [nodemon] starting node index.js
undefined:1
[{href: targetLink.href, anchor: targetLink.anchor, isLive: 1, isFollow: 1}]
  ^
Unexpected token h

所以我的 JSON 是无效的,老实说,我确信有更好的方法可以将数据从 casperjs 发送回节点,但我不知道如何。

我一直在考虑在 express 中创建一个新路由,然后让 casperjs 访问该路由并通过 GET 传递信息,然后在 node.js 中操作该信息。这是实现这一目标的好方法吗?

【问题讨论】:

    标签: json node.js express casperjs


    【解决方案1】:

    即使我收到了很好且可行的答案,我最终还是将所有内容都输出到了 casperjs 中的 stdout,然后通过 JSON 数组将其发送回 PHP。

    所以在 casperjs 中我写了类似的东西:

    console.log(JSON.stringify(targetLink))

    然后在节点中,我可以通过JSON.parse 访问它并以我想要的任何方式操作数据。

    编辑:

    我经常遇到这种情况,因此您也可以将 CasperJS POST 信息发送到 Web 端点,它有时会更干净,但如果您担心安全性并且需要制作,它会增加开销确保只有授权的爬虫才能将数据发布到您的端点。

    【讨论】:

      【解决方案2】:

      我通过将 CasperJs 作为服务运行,在 NodeJS 上使用了 CasperJS。

      基本上 NodeJS 通过 http.get() 向 CasperJS 脚本发出请求,该脚本返回 JSON 对象作为响应。

      这里有一个关于 CasperJS 脚本如何启动 Web 服务器的示例和更多详细信息:

      CasperJS passing data back to PHP

      【讨论】:

        【解决方案3】:

        您可能更喜欢使用 SpookyJS (https://github.com/WaterfallEngineering/SpookyJS) 之类的东西,它提供了在 Node.js 程序中使用 CasperJs 的能力。

        我不知道你是否会找到你想要的功能,但无论如何它可能更干净。

        【讨论】:

          猜你喜欢
          • 2021-08-22
          • 1970-01-01
          • 1970-01-01
          • 2014-09-26
          • 1970-01-01
          • 2020-07-06
          • 2018-03-24
          • 1970-01-01
          • 2013-06-26
          相关资源
          最近更新 更多