首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
华为云
V2EX  ›  问与答

今天有个大佬告知用 Python 调用 nodejs 运行 js 脚本或代码 然后可以接收返回值 不知道咋实现

  •  
  •   jakeyfly · 242 天前 · 2863 次点击
    这是一个创建于 242 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们有没有了解相关方面的 给个示例看看 好像是用 subprocess.Popen 来弄的 但是弄半天没成功

    20 回复  |  直到 2018-02-21 10:12:16 +08:00
        2
    jakeyfly   242 天前
    @messense 大佬 这个包跟 pyexec 那个比怎么样
        3
    golmic   242 天前 via Android
    最简单的方案,node 写文件,python 读
        4
    jakeyfly   242 天前
    @golmic 是用于爬虫的 get Js 文件 返回回来的 想读取其中的变量值或者函数返回值 所以 能不能直接调用 node 跑 JS 或者 上面说的包
        5
    zbl430   242 天前 via Android
    pip install pyexecjs
        6
    golmic   242 天前 via Android
    @jakeyfly 小段代码用 execjs,大段代码直接 node 跑
        7
    ETiV   242 天前 via iPhone
    nodejs 里 console.log 输出“返回值”
    python 里读这个子进程的 stdout 内容
        8
    jakeyfly   242 天前
    @ETiV 那是要先把请求回来的 JS 保存成文件吗 还是直接把 response 交给 nodejs 跑
        9
    jakeyfly   242 天前
    @golmic 大佬有 demo 借鉴一下不
        10
    ericls   242 天前
    nodejs --> stdout --> python

    ```
    p = subprocess.run(['command'], stdout=subprocess.PIPE)
    res = p.stdout
    ```
        11
    ETiV   242 天前 via iPhone
    哦 你是要下载别人的 js 运行
    headless browser 了解一下…

    nodejs 威力太大了,如果别人给你返回个删本地文件、或者开 ftp/shell 的 js 代码,就有趣了
        12
    jakeyfly   242 天前
    @ETiV 无端浏览器 不适合我 太慢了 谢谢大佬
        13
    jakeyfly   242 天前
    @ericls ['node','xx.js'] 老是提示我 文件或文件侠不存在 cwd=path 没有错 但是加上 shell=True 可以在终端上 python xxx.py 运行 不知道什么原因 晕了
        14
    tolbkni   242 天前 via Android
    @jakeyfly 提示是 node 不存在还是 xx.js 不存在?
        15
    zythum   242 天前
    @ETiV node 沙箱机制了解一下。 可以把执行代码拿出来当字符串用沙箱执行。require 不给他就行了。
        16
    ericls   242 天前 via iPhone
    @jakeyfly 如果你用相对路径 相对的是运行时的 cwd 而不是文件位置。 用 __file__ 组个绝对路径出来吧……

    如果是 node 不存在可以在运行前用 sys 改 path
        17
    jakeyfly   242 天前
    @tolbkni 提示文件或目录不存在,然后后面跟着 node xxx.js 是否是 node 没有配置好的问题 我在 BASH 下运行是可以的就是 pycharm run 不行
        18
    jakeyfly   242 天前
    @ericls 路径 我犯了一个低级错误 解决了 现在问题是 打印打出来的好像不全 ... 155 more items 如何全部的呢
        19
    jakeyfly   242 天前
    还想请教一下 我这是要爬取别人的 JS 文件 运行后 提示其中的变量的值 比如 ARRAY 值 返回 PYTHON 用 现在不明白的地方有 1,用 node 返回值 是否只能这样流的形式通信 该怎么在请求的 js 文件里 加上 console.log 这样自己的代码,2,返回的好像是字符串,我刚才用 pyminirance 弄了一下 能直接获取数组之类 python 能用的数据类型。。。。这种用 NODE 跑的方式是不是不适合用来爬数据呀。。。。。。。
        20
    golmic   242 天前 via Android
    pydata.me 里面有模拟登录新浪微博的代码,用到了这个
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1868 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 03:17 · PVG 11:17 · LAX 20:17 · JFK 23:17
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1