从HTML / JS数据返回到蟒蛇(Return data from html/js to pyth

2019-07-19 15:20发布

我有一个是由JavaScript函数填充一个HTML表单。 我有另一个JavaScript函数,得到所有的表单元素的值,目前只使用警报显示它们返回给用户。 HTML页面通过用下面的代码蟒蛇diplayed:

import webbrowser
new = 2 #open new tab if possible
url = "form.html"
webbrowser.open(url, new=new)

这一切运作良好,但使用的警报显示数据,我想将数据传回给Python,但不知道怎么办。 所有数据被存储在一个JavaScript阵列,所以我基本上只需要通过这一个数据片。

编辑:我不能使用任何外部库。

Answer 1:

>>> import json
>>> weird_json = '{"x": 1, "x": 2, "x": 3}'
>>> x = json.loads(weird_json)
>>> x
{u'x': 3}
>>> y = json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
>>> y
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]

你可以把HTML数据,并将其转换成一个字典,让您做到: print x['x']

这是出发点,在Python中创建一个套接字监听到的端口。 然后把它收到的数据。

在Javascript中,打开它可以连接到一个端口(一个Python的收听)的插座。 使用时,说: http://socket.io/

这是一个纯粹的接头到插座相关的问题?


Python和Java脚本(端口80)之间的工作关系:

from socket import *
import json
s = socket()
s.bind(('', 80))
s.listen(4)
ns, na = s.accept()

while 1:
    try:
        data = ns.recv(8192)
    except:
        ns.close()
        s.close()
        break

    data = json.loads(data)
    print data

有你有一个插座听80,连接到和发送任何你想要的。

function callPython()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","Form-data",true);
xmlhttp.send();
}

例如,您可以发送表单数据为字符串,替换“表单数据”,并从Python的响应可以投入“myDiv” :)



Answer 2:

喜欢的东西Ghost.py应该能够做你想做的。

这让JavaScript的评价。

result, resources = ghost.evaluate(
    "document.getElementById('my-input').getAttribute('value');")

这将有助于。

我用PhantomJS的JS无头WebKit浏览器,这是一个端口和/或使用Python的返工。


在我的使用情况下,我只是叫PhantomJS从subprocess.call ,因为我不能打扰安装Ghost的依赖。

我只是发出JSON到stdoutjson.loads就可以了。



文章来源: Return data from html/js to python