通过从节点子进程中进行抓取导入来运行Python脚本

时间:2018-11-05 22:50:30

标签: python node.js python-3.x scrapy anaconda

我正在尝试启动一个简单的刮板并运行以收集数据,并希望使用Python Scrapy。该应用程序的其余部分将通过Nodejs / Express进行,因此我想在需要新数据时按需调用此脚本。

通过piecharm,python代码可以在本地正常运行,但是当它作为脚本运行时,我看到了问题。

  1. 通过节点在本地运行服务器并按/ name时,节点失败,并显示“没有名为'scrapy'的模块
  2. 当我通过Anaconda提示符运行服务器时,此工作正常,并且scrapy被导入,没有错误。
  3. 我已经通过conda在1和2都运行快递服务器的位置安装了scrapy。

从我读到的内容来看,这可能与对Twisted反应器的刮擦需求有关,但是由于我是Python的新手,所以我不清楚anaconda终端在做什么,以及我需要做什么正确地从节点侧使用scrapy。

Nodejs:

app.get('/name', callName);
function callName(req, res) {
  console.log("test");
  var spawn = require('child_process').spawn;
  const pyProg = spawn('python', ['pythonscript.py']);

  pyProg.stdout.on('data', function(data) {

      console.log(data.toString());
      res.write(data);
      res.end('end');
  });
}    


//Print URL for accessing server
console.log('Server running at http://127.0.0.1:8000/')

app.listen(process.env.PORT || 8000, () => console.log("Listening on " + (process.env.PORT || 8000)));

Python脚本:

try:
    import sys
    import scrapy
    data = "python starting"
    print(data)
    sys.stdout.flush()
except Exception as exception:
    print(exception, False)
    print(exception.__class__.__name__ + ": " + exception.message)

更新: 当从Anaconda解释器运行import scrapy时(其他注释导致“未找到模块”)

回溯(最近通话最近):   文件“”,第1行,位于   在第34行的文件“ \ Anaconda3 \ lib \ site-packages \ scrapy__init __。py”中     从scrapy.spiders导入Spider   在第10行的文件“ \ Anaconda3 \ lib \ site-packages \ scrapy \ spiders__init __。py”中     来自scrapy.http导入请求   在第11行的文件“ \ Anaconda3 \ lib \ site-packages \ scrapy \ http__init __。py”     从scrapy.http.request.form导入FormRequest   第11行中的文件“ \ Anaconda3 \ lib \ site-packages \ scrapy \ http \ request \ form.py”     导入lxml.html   在第54行的文件“ \ Anaconda3 \ lib \ site-packages \ lxml \ html__init __。py”     从..导入etree ImportError:DLL加载失败:找不到指定的模块。

因此,这似乎不仅与解释器相关,还可能与终端使用的Anacondas变量有关?

0 个答案:

没有答案