Неперехваченная ошибка при попытке обновить результат скрипта python с использованием brython - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в Brython.Я получил uncaught error при попытке обновить результат выполнения скрипта python на моей странице с помощью brython.

Uncaught Error
    at Object._b_.AttributeError.$factory (eval at $make_exc (brython.js:7017), <anonymous>:31:340)
    at attr_error (brython.js:6184)
    at Object.$B.$getattr (brython.js:6269)
    at CallWikifier0 (eval at $B.loop (brython.js:4702), <anonymous>:34:66)
    at eval (eval at $B.loop (brython.js:4702), <anonymous>:111:153)
    at $B.loop (brython.js:4702)
    at $B.inImported (brython.js:4696)
    at $B.loop (brython.js:4708)
    at $B.inImported (brython.js:4696)
    at $B.loop (brython.js:4708)

Здесь моя страница

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<script src="/brython-3.7.0rc1/www/src/brython.js"></script>
<script src="/brython-3.7.0rc1/www/src/brython_stdlib.js"></script>
</head>

<body onload="brython()">
<script type="text/python" src="vttToWiki.py"></script>
<div class="wrap">title</div>
<p id="content-title"></p>
<div class="wrap">subtitle</div>
<div id="content-subtitle" class="content-div">
<p id="message" font-color=white>loading...</p> 
</div>
<button id="mybutton">click!</button>
</body>

</html>

Здесь мой скрипт на python.Это сценарий контакта с http://www.wikifier.org/annotate-article, который является сайтом для семантической аннотации.Учитывая текст, функция CallWikifier получила результат аннотации и URL вики соответственно.

import sys, json, urllib.parse, urllib.request
from browser import alert, document, html

element = document.getElementById("content-title")
def CallWikifier(text, lang="en", threshold=0.8):
    # Prepare the URL.
    data = urllib.parse.urlencode([
        ("text", text), ("lang", lang),
        ("userKey", "trnwaxlgwchfgxqqnlfltzdfihiakr"),
        ("pageRankSqThreshold", "%g" % threshold), ("applyPageRankSqThreshold", "true"),
        ("nTopDfValuesToIgnore", "200"), ("nWordsToIgnoreFromList", "200"),
        ("wikiDataClasses", "true"), ("wikiDataClassIds", "false"),
        ("support", "true"), ("ranges", "false"),
        ("includeCosines", "false"), ("maxMentionEntropy", "3")
        ])
    url = "http://www.wikifier.org/annotate-article"
    # Call the Wikifier and read the response.
    req = urllib.request.Request(url, data=data.encode("utf8"), method="POST")
    with urllib.request.urlopen(req, timeout = 60) as f:
        response = f.read()
        response = json.loads(response.decode("utf8"))
    # Save the response as a JSON file
    with open("record.json", "w") as f:
        json.dump(response, f)
    # update the annotations.
    for annotation in response["annotations"]:
        alert(annotation["title"])
        elt = document.createElement("B")
        txt = document.createTextNode(f"{annotation}\n")
        elt.appendChild(txt)
        element.appendChild(elt)

document["mybutton"].addEventListener("click", CallWikifier("foreign minister has said Damascus is ready " +"to offer a prisoner exchange with rebels.")

Если у вас есть идеи по этому поводу, пожалуйста, дайте мне знать.Спасибо за совет!

...