猿问

使用EEL将数据从Python发送到Javascript

我正在尝试使用EEL及其文档将数据从python发送到Javascript,但它似乎不起作用...我一直在我的html / js页面中得到空值。


这是我所拥有的。基本上,我想获取BING壁纸的链接,并将其用作我的页面作为背景。但在那之前,我想先得到结果。


必应派脚本:


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 控制台中返回我的 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>

请帮助我了解这一切是如何工作的。


慕田峪4524236
浏览 109回答 1
1回答

慕慕森

不确定您是否不小心将代码格式错误,但它有点偏差。此外,您在不需要的时候导入了bs4和json。您的 scrape_bing() 函数未返回任何内容。当在“myDef = scrape_bing()”中分配它时,它需要返回一个值给“myDef”。我稍微改变了一下你的,并想出了这个例子,希望能让你开始。希望这有帮助。main.pyimport eelimport requestseel.init('web')@eel.exposedef bingR():&nbsp; &nbsp; BASE_PATH = 'http://www.bing.com'&nbsp; &nbsp; BASE_REST = '/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US'&nbsp; &nbsp; URL = BASE_PATH + BASE_REST&nbsp; &nbsp; r = requests.get(url=URL)&nbsp; &nbsp; if r.status_code == 200:&nbsp; &nbsp; &nbsp; &nbsp; data = r.json()&nbsp; &nbsp; &nbsp; &nbsp; wallpaper_path = BASE_PATH + data['images'][0]['url']&nbsp; &nbsp; &nbsp; &nbsp; print(wallpaper_path)&nbsp; &nbsp; &nbsp; &nbsp; return wallpaper_path&nbsp; &nbsp; return 'No wallpaper found'try:&nbsp; &nbsp; eel.start('index.html', mode='chrome', host='localhost', port=8274)except (SystemExit, MemoryError, KeyboardInterrupt):&nbsp; &nbsp; passprint ('Closed browser log...!')web\myscript.jsasync function run() {&nbsp; &nbsp; let n = await eel.bingR()();&nbsp; &nbsp; console.log('Got this from Python: ' + n);&nbsp; &nbsp; document.getElementById('output').value = n;}run();网站\索引.html<!doctype html><html><head>&nbsp; <meta charset="utf-8">&nbsp; <title>Test</title></head><body>&nbsp; <script type="text/javascript" src="/eel.js"></script>&nbsp; <script type="text/javascript" src="/myscript.js"></script>&nbsp; <input id="output" value="Output here" style="width: 700px;"></body></html>也感谢您向我介绍鳗鱼。第一次使用它,真的很喜欢它:)
随时随地看视频慕课网APP

相关分类

Python
我要回答