Я пытаюсь запрограммировать web crawler
.
У меня есть server.js / crawling.js / dataCrawler.py
Когда я вызываю crawlData
, который определен в crawling.js
в server.js
, вызывается метод, который я определил в crawling.js
, используя spawn для выполнения dataCrawler.py
.
Мне нужны данные в server.js
, но выполнение dataCrawler.py
занимает некоторое время, поэтому я не могу получить правильные данные, но ноль или неопределенные.
У вас есть какое-нибудь решение? или тот, у кого такая же проблема?
Мои коды ниже. (Я не ставлю это идеально. Просто ссылка на структуру)
// server.js
var crawler = require("./crawling")
var resultArr = crawler.crawlData();
console.log('nodeserver:', resultArr)
// crawling.js
exports.crawlData = ()=>{
var dataArr = [];
var temp;
var py = spawn('python', ['dataCrawler.py']);
var data = [totalUrl, gubun];
var dataFromPy = null;
py.stdout.on('data', function(result){
var dataArr = encoding.convert(result, 'utf-8')
dataArr = JSON.parse(encoding.convert(result, 'utf-8'));
py.stdout.on('end', function(){
temp = dataArr
});
});
py.stdin.write(JSON.stringify(data));
py.stdin.end();
return temp;
}
// dataCrawler.py
def crawling(url, gubun, page_count):
idx = 0
result = []
jsonData = {}
for i in range(1, page_count + 1):
....
crawling code
....
return result
def main():
lines = sys.stdin.readlines()
paraFromServer = json.loads(lines[0])
url = paraFromServer[0]
gubun = paraFromServer[1]
result = crawling(url, gubun, page_count)
print(result)
main()