我正在尝试启动一个简单的刮板并运行以收集数据,并希望使用Python Scrapy。该应用程序的其余部分将通过Nodejs / Express进行,因此我想在需要新数据时按需调用此脚本。
通过piecharm,python代码可以在本地正常运行,但是当它作为脚本运行时,我看到了问题。
从我读到的内容来看,这可能与对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变量有关?