2017-10-16 11 views
1

웹 사이트 (IMDB)를 구문 분석하고이를 데이터 프레임으로 구성하는 python 스크립트를 만들었습니다. 파이썬 스크립트에 포함시킬 변수 (영화 이름을 기반으로하는 영화 ID는 pyvar)를 찾을 수있게 해주는 node.js 앱이 있습니다. 그렇다면 어떻게 자바 스크립트 앱을 파이썬 스크립트로 실행하고 스크립트를 실행 한 다음 결과를 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!!!"); 
 
})

한마디에 파이썬 스크립트는 다음과 같습니다 (즉 것 dataframe는 할 수 JSON 말을 변환) nodeframe.js 앱으로 데이터 프레임을 다시 보내고 결과를 표시하거나, 내가 t를 다운로드 할 수 있다면 더 좋을 것입니다. 데이터 프레임을 xlsx로 변환했지만 너무 복잡 할 수 있습니다.

+1

스크립트는 일반적으로 매개 변수의 형태로 입력을하거나 표준 입력에서 읽어

// ... 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 app.js. 스크립트는 stdout에 출력되어야합니다. 이 방법으로 작동하도록 스크립트를 업데이트하면 https://nodejs.org/api/child_process.html을 사용할 수 있습니다. –

답변

1

당신은 펠릭스 클링으로, 파이썬 스크립트를 실행 child_process spawn을 사용하여 자신의 의견에 제안하고 당신의 nodejs 응용 프로그램에 결과를 반환 할 수 있습니다. 그런 다음 node-xlsx과 같은 패키지를 사용하여 데이터를 Excel 파일로 변환 할 수 있습니다. 그런

뭔가 :

#!/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

실제로 비슷한 응용 프로그램을 사용했지만 파이썬 셸 라이브러리를 사용했지만 기본 사항은 –

+0

입니다.이 경우 훨씬 편리 해 보이는 파이썬 셸에 대해서는 몰랐습니다. – TGrif

관련 문제