Чтобы запустить код на стороне сервера, вам действительно нужен сервер для ответа на запросы.Это может выглядеть так:
const { exec } = require('child_process');
const app = require("express")(); // "npm install express" to install this dependency
app.get("/adress", (req, res) => { // server this path
exec('scrapy crawl address', (err, stdout, stderr) => {
res.json({ // respond to client if the command was done
stdout: "" + stdout,
stderr: "" + stderr
});
});
app.listen(80,() => console.log("server started"));
Это откроет сервер на порту 80, если вы запустите скрипт с node ./scrapping.js
, и ответит JSON, если вы посетите его на http://localhost/adress
Теперь при каждом нажатии кнопки на внешнем интерфейсе вы должны запустить aJAX-запрос к бэкэнду:
// "async" lets us write callbacks more gracefully
button.addEventListener('click', async function(e) {
try {
// fetch is like $.ajax, but its native
// 'await' is like a callback
const { stdout, stderr } = await fetch("http://localhost/adress").then(res => res.json());
console.log(stdout, stderr);
} catch(err) {
console.error("error occured while pinging server", err);
}
});