-
Node.js에서 python 실행하기코딩/PYTHON 2020. 11. 27. 15:56
window 환경에서 python shell을 꾸준히 사용했으나,
해당 부분이 원인 모를 오류가 나서 다른 방법을 찾게 되었습니다
node.js에서 child.process로 다른 프로세스를 실행할수 있습니다.
child_process.spawn(command[, args][, options])
ps. python3라고 적어논 이유는
내 mac 환경에서는 python 버전 3 버전을 실행 시키려면 python3라는 명령어를 터미널에서
입력해서 사용하기 때문.
String.prototype.replaceAll = function (org, dest) { return this.split(org).join(dest); }; const FILE_ROOT_DIR = process.cwd(); router.post('/getRealtimeTerms', async (req, res) => { try { var util = require('util'); var spawn = require('child_process').spawn; var process = spawn('python3', [ FILE_ROOT_DIR + '/src/lib/python/naverRealtime.py', ]); util.log('readingin'); process.stdout.on('data', function (chunk) { let textChunk = chunk.toString('utf-8'); // buffer to string //textChunk = a(textChunk); util.log(textChunk); textChunk = textChunk.replaceAll("'", '"'); textChunk = textChunk.replaceAll('None', '"None"'); const obj = JSON.parse(textChunk); res.json(obj); }); //replaceAll prototype 선언 } catch (e) { console.error(e); } });
여기서 보실 건
var process = spawn('python3', [ FILE_ROOT_DIR + '/src/lib/python/naverRealtime.py', ]);
python3라는 명령어로 두번째 인자값에 있는 파일을 실행하겠다는 겁니다.
python 파일에서 print를 하면 그 print된 text가
chunk에 담겨져 나오게 됩니다.
이걸 이용, 가공해서 쓰시면 되겠습니다.
저는 이런식으로 사용했습니다.
node.js에서 프로세스로 실행시킨
이 파이썬 파일은 네이버 실시간 검색어를 크롤링하는 파이썬 파일입니다.
해당 크롤링 데이터 JSON형태로 출력시키게 해놓았습니다.
만약 해당 routing 경로로 호출하게 된다면
요런 데이터를 받을 수 있습니다.
'코딩 > PYTHON' 카테고리의 다른 글
[ 파이썬] requests 모듈을 이용해 네이버 뉴스토픽 크롤링! (0) 2020.12.01