用Python与JavaScript通信?
有没有办法让一个正在运行的Python脚本向一个正在运行JavaScript的网页发送数据包呢?
我想要的具体用法是,网页可以通过JavaScript告诉Python脚本当前网页的状态信息,然后Python脚本解析这些数据,再把数据发送回网页,最后JavaScript根据这些数据决定执行哪个功能。
这是为了一个视频游戏的机器人(合法的),所以这个过程需要实时进行。我对Python和网络请求比较熟悉,但刚开始接触JavaScript,希望这个解决方案在JavaScript方面不会太复杂。
补充:我在想的一种方法是让JavaScript写入一个文件,然后Python脚本也可以读取和写入这个文件,但我快速搜索了一下,发现JavaScript在文件输入输出方面的功能非常有限。有没有其他方法可以实现这个呢?
3 个回答
听起来这个Javascript只会发送信息,而不会接收信息。如果是这样的话,那你运气不错。我猜你是在同一台机器上同时运行Javascript和Python。
在你使用浏览器的机器上运行一个Python网页服务器。这里有个简单的例子:
当你在浏览器中访问 http://127.0.0.1:8080/
时,如果看到消息 Hello World!
,那么你就可以开始往你的网站添加更多的地址,比如 http://127.0.0.1:8080/report_data
、http://127.0.0.1:8080/report_event
等等。
然后你的Javascript可以使用 jQuery.ajax
或 XMLHTTPRequest
来向 http://127.0.0.1:8080/report_data
这个地址发送请求,并把信息作为 GET
参数传递过去。
你可以使用 XMLHttpRequest 这个接口来发送 HTTP 请求,Jquery 通过 $.ajax 和 $.get 这两个方法把它变得更简单了。你也可以使用更底层的 Websockets 网络接口:
https://developer.mozilla.org/en-US/docs/WebSockets
需要注意的是,XMLHttpRequest 这个接口只允许向同一个服务器发送请求,或者请求的响应中要包含合适的 Access-Control-Allow-Origin 头信息。
出于安全考虑,浏览器中的JavaScript通常只能和它加载的那个网站进行交流。
基于这个原因,AJAX调用就是一个很常见的操作。