Я пытаюсь запустить простой скребок для сбора данных и хотел бы использовать Python Scrapy. Остальная часть приложения будет через Nodejs / Express, поэтому я хотел бы вызывать этот скрипт по требованию, когда мне нужны свежие / новые данные.
Код python прекрасно работает локально через piecharm, но я вижу проблемы, когда он запускается как скрипт.
- Через узел, когда я запускаю сервер локально и нажимаю / имя, он выходит из строя с «ни одним модулем с именем« scrapy »
- Когда я запускаю сервер через приглашение Anaconda, это работает нормально, и scrap импортируется без ошибок.
- Я установил scrapy через conda в месте, где экспресс-сервер работает как для 1, так и для 2.
Из того, что я прочитал, это может быть связано с необходимостью использования скрученного реактора 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)
Обновление:
При запуске импорта scrapy от интерпретатора Anaconda (другой из комментариев привел к «модуль не найден»)
Traceback (последний вызов был последним):
Файл "", строка 1, в
Файл "\ Anaconda3 \ lib \ site-packages \ scrapy__init __. Py", строка 34, в
от scrapy.spiders импорт Spider
Файл "\ Anaconda3 \ lib \ site-packages \ scrapy \ spiders__init __. Py", строка 10, в
от scrapy.http Запрос на импорт
Файл "\ Anaconda3 \ lib \ site-packages \ scrapy \ http__init __. Py", строка 11, в
из scrapy.http.request.form import FormRequest
Файл "\ Anaconda3 \ lib \ site-packages \ scrapy \ http \ request \ form.py", строка 11, в
import lxml.html
Файл "\ Anaconda3 \ lib \ site-packages \ lxml \ html__init __. Py", строка 54, в
из .. импортировать этри
ImportError: Ошибка загрузки DLL: указанный модуль не найден.
Так что, похоже, это связано не только с интерпретатором, но может быть что-то дополнительное с переменными Anacondas, которые используются для терминала?