Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在electron应用程序之外运行python代码_Javascript_Python_Electron_Bots - Fatal编程技术网

Javascript 是否可以在electron应用程序之外运行python代码

Javascript 是否可以在electron应用程序之外运行python代码,javascript,python,electron,bots,Javascript,Python,Electron,Bots,所以我用javascript html css等创建了一个桌面电子应用程序。我有一个机器人,当用户点击按钮时,我想运行这个机器人。这个机器人是用python编写的。bot所做的是使用selenium和chrome驱动程序进行web抓取,我只是想知道是否有一种方法可以将bot及其源代码存储在客户端计算机之外,这样源代码就不可见了,并且仍然可以让客户端使用bot进行web抓取 对不起,如果这是一个新手问题,我来自C++和Swift Mobile开发,我是一个初级CS学生,所以我只是在教自己新的东西。

所以我用javascript html css等创建了一个桌面电子应用程序。我有一个机器人,当用户点击按钮时,我想运行这个机器人。这个机器人是用python编写的。bot所做的是使用selenium和chrome驱动程序进行web抓取,我只是想知道是否有一种方法可以将bot及其源代码存储在客户端计算机之外,这样源代码就不可见了,并且仍然可以让客户端使用bot进行web抓取


对不起,如果这是一个新手问题,我来自C++和Swift Mobile开发,我是一个初级CS学生,所以我只是在教自己新的东西。

< P>我同意Chris G的观点,认为用Python的许多Web框架(Django,FastAPI,Fulk等)创建一个Web应用程序将被认为是最好的实践。 或者,对于封装,这可以非常简单地用电子完成:

const{app,BrowserWindow}=require('electron');
const pyshell=require('python-shell')
函数createWindow(){
窗口=新浏览器窗口({宽度:600,高度:450});
loadFile('index.html');
run('your_script.py',函数(err,results){
如果(错误){
犯错误;
}
});
}
应用程序打开(“就绪”,创建窗口);
app.on('window-all-closed',()=>{
if(process.platform!=='darwin'){
app.quit()
}
}

然后,使用一个简单的python脚本
您的_script.py

a='Foo'
b=‘巴’
打印(a+b)

这个例子很简单。如果你不想在发布应用程序时遇到任何兼容性问题,那么最好创建自己的面向web的API。

这是绝对可能的,但你必须将python代码转换为面向公众的web服务器。你可以使用flask实现这一点,但你还需要托管。@ChrisG by public fac使用flask的electron应用程序将与服务器对话并从那里运行代码以访问chromedriver?好吧,不管涉及何种语言,如果你想对用户隐藏你的抓取代码,你需要将其放在web服务器上,然后请求o从您的electron应用程序中删除服务器。您的python代码正在执行抓取操作,因此您也可以将其扩展为web服务器。例如,服务器上托管了一个包含您的bot的flask应用程序。这可能行得通吗?是的,我想知道服务器上的请求是否可以在客户端计算机上运行,因此请在其计算机上打开chrome驱动程序。
如果服务器上的请求可以在客户端计算机上运行
…?我认为您不能将python机器人“放在”客户端计算机的外部,而将chrome刮片过程“放在”内部。其想法是,electron应用程序向基于python的服务器发出请求,然后由该服务器执行抓取操作;结果作为对请求的响应返回。另外:您到底为什么要对客户端隐藏抓取代码?您首先抓取的是什么?这可能是一个巨大的问题,因此pyshell是另一个选择method但您建议在我的electron应用程序上使用flask或Django连接python代码,该代码基本上会托管在某种服务器上?@RayRay正确。创建一个面向web的应用程序,然后在您的electron应用程序中呈现它将是最好的。或者,您可以创建一个API(我建议使用FastAPI)这将运行你的python脚本。如果你的脚本有其他要传递的参数,这将非常好。我已经使用html、css、javascript创建了我的应用程序,我不需要正确地更改整个应用程序,只需实现并添加api。我可能会使用你推荐的快速api,因为我需要传递参数RayLay:您不必改变太多,只是使用jQuery中的几个简单的Ajax调用使用jQuery,它将向API发送请求。虽然FastAPI很棒,但需要花一些时间来学习。但是,FLASK有成千上万个教程来构建一个有效的REST API。我绝对会考虑您的选择。请点击这里,并尝试权衡每种方法的优缺点。祝你好运!@Ray,看看另一条评论线索,我不太确定API是否能够很好地处理ChromeDriver(如果有的话)。试图解决你的问题会变得相当乏味。在这种情况下,Pythonywhere不起作用-你需要将你的python应用程序作为一个a捆绑实际应用程序。您可以创建CLI,创建GUI,但这会有兼容性问题的风险。查看PySimpleGUI或PyQt5。这会让您更好地了解从何处开始。