Hoy en día, Node.js es la tecnología más atractiva en el campo del desarrollo de back-end para desarrolladores de todo el mundo. Y si alguien desea usar algo como Web Scraping usando módulos de python o ejecutar algunos scripts de python que tienen algunos algoritmos de aprendizaje automático, entonces uno necesita saber cómo integrar estos dos.
Vamos a obtener algunos datos de un usuario a través del web scraping de leetcode. Entonces empecemos.
Ahora, configure primero el código del servidor Node.js.
Javascript
//Import express.js module and create its variable. const express=require('express'); const app=express(); //Import PythonShell module. const {PythonShell} =require('python-shell'); //Router to handle the incoming request. app.get("/", (req, res, next)=>{ //Here are the option object in which arguments can be passed for the python_test.js. let options = { mode: 'text', pythonOptions: ['-u'], // get print results in real-time scriptPath: 'path/to/my/scripts', //If you are having python_test.py script in same folder, then it's optional. args: ['shubhamk314'] //An argument which can be accessed in the script using sys.argv[1] }; PythonShell.run('python_test.py', options, function (err, result){ if (err) throw err; // result is an array consisting of messages collected //during execution of script. console.log('result: ', result.toString()); res.send(result.toString()) }); }); //Creates the server on default port 8000 and can be accessed through localhost:8000 const port=8000; app.listen(port, ()=>console.log(`Server connected to ${port}`));
Ahora, Python Script. (Asegúrese de haber instalado el módulo bs4 y el módulo csv).
Python3
# code import sys import requests from bs4 import BeautifulSoup from csv import writer # bs4 module for web scraping and requests for making HTTPS requests using Python. response = requests.get('https://leetcode.com / shubhamk314') soup = BeautifulSoup(response.text, 'html.parser') main_content = soup.select( '# base_content>div>div>div.col-sm-5.col-md-4>div:nth-child(3)>ul') list_items = main_content[0].select('li') items = ['Solved Question', 'Accepted Submission', 'Acceptance Rate'] n = 0 # It will create csv files named progress.csv in root folder once this is script is called. with open('progress.csv', 'w') as csv_file: csv_writer = writer(csv_file) headers = ['Name', 'Score'] csv_writer.writerow(headers) while(n < 3): name = items[n] score = list_items[n].find('span').get_text().strip() csv_writer.writerow([name, score]) n = n + 1 print("csv file created for leetcode")
Después de guardar ambos archivos, ejecute el siguiente comando desde su carpeta raíz:
node test.js
Ahora, envíe la solicitud a través de localhost:8000 en el navegador.
Si todo va bien, entonces la salida será:
Mensaje: archivo csv creado para leetcode.
Conclusión
Esta es la implementación simple de un script de cómo ejecutar Python con Node.js que puede ser útil en situaciones en las que tiene una pila de aplicaciones Node.js y desea ejecutar un script de Python simple. Si desea saber más sobre el módulo PythonShell, vaya al enlace proporcionado.