бегущая терапия от nodejs - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь запустить скрипт scrapy из проекта node js. Когда я запускаю его через Python IDE с помощью приведенной ниже команды, он отлично работает

python scrap.py

Когда скрипт выполняется из nodejs, он успешно завершается, но не выдает никакой ошибки и не генерирует выходной файл.

Scrap.py

def main():
    try:       
        process = CrawlerProcess(get_project_settings())
        process.crawl('crawlim')        
        process.start()
        print ("executed")
        sys.stdout.flush()
    except:
        print ("error")
if __name__ == '__main__':
         main()

Файл узла

let {PythonShell}=require('python-shell')
 PythonShell.run(path.join(__dirname, '/py/scrap.py'), options, function (err) {
  if (err) throw err;
  console.log('finished');
}); 

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Существуют разные способы написания скребка в зависимости от требований. Это также зависит от того, какие библиотеки использовались для получения данных (скрап для сканирования данных или селена для отображения взаимодействия с браузером и получения необходимых данных). Из моего личного опыта мы смогли вызвать скрипт скребка (наш скрипт скребка использует библиотеки selenium и BeautifulSoup). Ниже показано, как мы выполняли скрипт, используя дочерний процесс.

   const spawn = require("child_process").spawn;
   const pythonProcess = spawn('python',["./Scraper_script.py",p]);

Если вы используете паук-скрап для сканирования данных, этот подход не работает.

0 голосов
/ 08 марта 2019

Использование require('child_process').exec

var exec = require('child_process').exec;
var path = require('path');

var file_path = path.join(__dirname, 'scrap.py');
exec('python ' + file_path, function (error, stdout, stderr) 
{ 
    if(error){
        console.log(stderr);
    }else {
        console.log(stdout);
      }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...