2017-10-16 9 views
1

Webサイト(IMDB)を解析し、データフレームに編成するpythonスクリプトを作成しました。 私はPythonスクリプトに含める変数(pyvarというコードのムービー名に基づくムービーID)を見つけることができるnode.jsアプリもあります。だから、私はPythonスクリプトにjavascriptアプリケーションを実行した後に取得するこの変数を含めることができます、スクリプトを実行し、結果をnode.jsアプリに送り返しますか?後Pythonスクリプトを使用したNode.jsアプリケーション

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

の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のスクリプトは次のようになります(つまり、データフレームは、JSONを言うことができますに変換されます)何らかの形でデータフレームをnode.jsアプリに送って結果を表示したり、もし私がt彼はデータフレームをxlsxに変換しましたが、複雑すぎるかもしれません。

+1

スクリプトは通常、パラメータの形式で入力を取るか、または標準入力から読み込みます。スクリプトはstdoutに出力する必要があります。このように動作するようにスクリプトを更新する場合は、https://nodejs.org/api/child_process.htmlを使用できます。 –

答えて

1

child_process spawnを使ってPythonスクリプトを実行することができます。Felix Klingがコメントで提案し、結果をnodejsアプリに返します。次に、node-xlsxのようなパッケージを使用して、データをExcelファイルに変換することができます。そのような

何か:

app.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')); 
     }); 
    } 
    }) 

}) 

// ... 

script.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) 
+0

実際に私は同様のアプリを持っていましたが、Pythonシェルライブラリを使用しましたが、基本はそこにあります –

+0

私はこれについてもっと便利であると思われるpython-shellについて知りませんでした。 – TGrif

関連する問題