使用 EEL 将数据从 Python 发送到 Javascript
Sending data from Python to Javascript using EEL
我正在尝试使用 EEL 及其文档将数据从 python 发送到 Javascript,但它似乎不起作用...我的 html / js页面。
这是我的资料。基本上我想获取 BING 壁纸的 link 并将其用作我的页面中的背景。但在那之前,我想先得到结果。
BING py脚本:
import bs4
import requests
import json
def scrape_bing():
BASE_PATH = 'http://www.bing.com'
BASE_REST = '/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US'
URL = BASE_PATH + BASE_REST
r = requests.get(url=URL)
if r.status_code == 200:
data = r.json()
wallpaper_path = BASE_PATH + data['images'][0]['url']
print(wallpaper_path)
else:
raise ValueError("[ERROR] non-200 response from Bing server for '{}'".format(URL))
def main():
scrape_bing()
if __name__ == '__main__':
main()
脚本有效,它在 Python 控制台中 returns 我的 URL。
我的main.py有EEL如下:
import eel
from inc.bing import scrape_bing
eel.init('web')
myDef = scrape_bing()
@eel.expose
def bingR():
return myDef
try:
eel.start('index.html', mode='chrome', host='localhost', port=8274)
except (SystemExit, MemoryError, KeyboardInterrupt):
pass
print ('Closed browser log...!')
我在他们的示例中使用了异步命令,就像这样:
<script type="text/javascript" src="/eel.js"></script>
<script type="text/javascript">
async function run() {
let n = await eel.bingR()();
console.log('Got this from Python: ' + n);
}
run();
</script>
请帮助我理解这一切是如何工作的。
不确定您是否不小心将代码格式错误,但有点不对劲。你还导入了 bs4 和 json 当你不需要的时候。
您的 scrape_bing() 函数没有 returning 任何东西。在“myDef = scrape_bing()”中赋值时需要return一个值给“myDef”。
我对你的进行了一些改动,并提出了这个示例,希望它能帮助你入门。希望这有帮助。
main.py
import eel
import requests
eel.init('web')
@eel.expose
def bingR():
BASE_PATH = 'http://www.bing.com'
BASE_REST = '/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US'
URL = BASE_PATH + BASE_REST
r = requests.get(url=URL)
if r.status_code == 200:
data = r.json()
wallpaper_path = BASE_PATH + data['images'][0]['url']
print(wallpaper_path)
return wallpaper_path
return 'No wallpaper found'
try:
eel.start('index.html', mode='chrome', host='localhost', port=8274)
except (SystemExit, MemoryError, KeyboardInterrupt):
pass
print ('Closed browser log...!')
web\myscript.js
async function run() {
let n = await eel.bingR()();
console.log('Got this from Python: ' + n);
document.getElementById('output').value = n;
}
run();
web\index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<script type="text/javascript" src="/eel.js"></script>
<script type="text/javascript" src="/myscript.js"></script>
<input id="output" value="Output here" style="width: 700px;">
</body>
</html>
也谢谢你给我介绍鳗鱼。第一次使用,非常喜欢:)
我正在尝试使用 EEL 及其文档将数据从 python 发送到 Javascript,但它似乎不起作用...我的 html / js页面。
这是我的资料。基本上我想获取 BING 壁纸的 link 并将其用作我的页面中的背景。但在那之前,我想先得到结果。
BING py脚本:
import bs4
import requests
import json
def scrape_bing():
BASE_PATH = 'http://www.bing.com'
BASE_REST = '/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US'
URL = BASE_PATH + BASE_REST
r = requests.get(url=URL)
if r.status_code == 200:
data = r.json()
wallpaper_path = BASE_PATH + data['images'][0]['url']
print(wallpaper_path)
else:
raise ValueError("[ERROR] non-200 response from Bing server for '{}'".format(URL))
def main():
scrape_bing()
if __name__ == '__main__':
main()
脚本有效,它在 Python 控制台中 returns 我的 URL。
我的main.py有EEL如下:
import eel
from inc.bing import scrape_bing
eel.init('web')
myDef = scrape_bing()
@eel.expose
def bingR():
return myDef
try:
eel.start('index.html', mode='chrome', host='localhost', port=8274)
except (SystemExit, MemoryError, KeyboardInterrupt):
pass
print ('Closed browser log...!')
我在他们的示例中使用了异步命令,就像这样:
<script type="text/javascript" src="/eel.js"></script>
<script type="text/javascript">
async function run() {
let n = await eel.bingR()();
console.log('Got this from Python: ' + n);
}
run();
</script>
请帮助我理解这一切是如何工作的。
不确定您是否不小心将代码格式错误,但有点不对劲。你还导入了 bs4 和 json 当你不需要的时候。
您的 scrape_bing() 函数没有 returning 任何东西。在“myDef = scrape_bing()”中赋值时需要return一个值给“myDef”。
我对你的进行了一些改动,并提出了这个示例,希望它能帮助你入门。希望这有帮助。
main.py
import eel
import requests
eel.init('web')
@eel.expose
def bingR():
BASE_PATH = 'http://www.bing.com'
BASE_REST = '/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US'
URL = BASE_PATH + BASE_REST
r = requests.get(url=URL)
if r.status_code == 200:
data = r.json()
wallpaper_path = BASE_PATH + data['images'][0]['url']
print(wallpaper_path)
return wallpaper_path
return 'No wallpaper found'
try:
eel.start('index.html', mode='chrome', host='localhost', port=8274)
except (SystemExit, MemoryError, KeyboardInterrupt):
pass
print ('Closed browser log...!')
web\myscript.js
async function run() {
let n = await eel.bingR()();
console.log('Got this from Python: ' + n);
document.getElementById('output').value = n;
}
run();
web\index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<script type="text/javascript" src="/eel.js"></script>
<script type="text/javascript" src="/myscript.js"></script>
<input id="output" value="Output here" style="width: 700px;">
</body>
</html>
也谢谢你给我介绍鳗鱼。第一次使用,非常喜欢:)