javascript - 带有 python 脚本的 Node.js 应用程序

标签 javascript python node.js

我创建了一个 python 脚本来解析网站 (IMDB) 并将其组织成数据框。 我还有一个 node.js 应用程序,它允许我找到我将包含在 python 脚本中的变量(电影 ID 基于名为 pyvar 的代码中的电影名称)。那么,如何将运行 javascript 应用程序后获得的这个变量包含到 python 脚本中,运行脚本,然后将结果发送回 node.js 应用程序? (那将是数据框转换为 json)

Node.js 应用

var express = require("express")
var app = express()
var request = require("request")
app.set("view engine", "ejs")

app.get("/", function(req, res){
    res.render("search")
})

app.get("/results", function(req, res){
    var query = req.query.search
    var url = "http://www.omdbapi.com/?s=" + query + "&apikey=thewdb"
    
    request(url, function(error, response, body){
        if(!error && response.statusCode == 200){
            var data = JSON.parse(body)
            res.render("results", {data: data})
            var pyvar = data["Search"][0]["imdbID"]
        }    
    })
})

app.listen(process.env.PORT, process.env.IP, function(){
    console.log("Movie App has started!!!");
})

简而言之,python 脚本如下所示:

url = 'website.org/' + pyvar + '/blah'
parse(url)
return dataframe

之后,我会以某种形式将数据帧发送回 node.js 应用程序并显示结果,如果它允许我下载转换为 xlsx 的数据帧甚至更好,但它可能太复杂了。

最佳答案

您可以使用 child_process spawn 来执行您的 python 脚本,正如 Felix Kling 在他的评论中所建议的那样,并将其结果返回给您的 nodejs 应用程序。然后你可以使用像 node-xlsx 这样的包将数据转换为 Excel 文件。

类似的东西:

应用程序.js

// ...
const { spawn } = require('child_process');
const xlsx = require('node-xlsx');

// ...    
app.get("/results", (req, res) => {
  let query = req.query.search;
  let url = "http://www.omdbapi.com/?s=" + query + "&apikey=thewdb";

  request(url, (error, response, body) => {
    if (!error && response.statusCode == 200) {
      let data = JSON.parse(body);
      let pyvar = data["Search"][0]["imdbID"];

      // Call the python script
      let pythonScript = spawn('./script.py', [pyvar]);

      pythonScript.stdout.on('data', data => {
        // Here transform the datatable to xls sheet
        let xlsx = xlsx.build([{ name: "myXlsxSheet", data: data.toString() }])
        // And send the file
        res.end(new Buffer(xlsx, 'binary'));
      });
    }
  })

})

// ...

脚本.py

#!/usr/bin/python

import sys
import pandas

pyvar = sys.argv[1]

# Here the script that parse the website
url = 'website.org/' + pyvar + '/blah'
data = parse(url)

print pandas.DataFrame(data)

关于javascript - 带有 python 脚本的 Node.js 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46779359/

相关文章:

javascript - jquery 参数中的 addclass 是一个 javascript 变量

javascript - 值为 "ok"、 false、true、null、123 有效 JSON

python - 为 namecheap 共享托管计划托管的网站安装 mysqlclient 时出现问题

python - 如何获取nltk树中某个节点的父节点和子节点?

javascript - event.target.value 对于包装图像而不是文本的按钮是未定义的

javascript - 在 Node.js 中管道/流式处理 JavaScript 对象

javascript - 我不明白计算/javascript 的字符串到字节方面

javascript - 使用带 Angular js 的灰尘模板

javascript - 如何计算网站的页面加载时间,包括总时间而不仅仅是 document.ready() 时间?

node.js - 在 Require.js 优化器中打包 *.html 模板?