python3.4和阅读这个简单的XML站点有什么关系?

2024-09-30 00:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个设备,它有一个简单的web服务器,它有一个带有XML的页面。我想用python3.4捕捉结果。这个网站看起来和这个页面的源代码一模一样。在

<?xml version="1.0" encoding="utf-8"?>
<datavalues>
<units>F</units>
<sensor1temp>67.5</sensor1temp>
<sensor2temp>57.9</sensor2temp>
<sensor3temp>54.6</sensor3temp>
<sensor4temp>x.x</sensor4temp>
<relay1state>0</relay1state>
<relay2state>0</relay2state>
</datavalues>

我使用的代码非常简单,如下所示:

^{pr2}$

我有一个例外,看起来像这样:

^{3}$

我监听了他们的反应。数据返回四个块Frame11/Ethernet II/Internet协议版本4/TCP。xml的数据包含在第11帧部分中。不太清楚那是什么意思。在

我在工作中使用Jython2.5,上面的技术工作得很好。有没有python3.4解决方案?非常感谢你的帮助。谢谢。在


Tags: 数据服务器web网站页面xmlunitsdatavalues
1条回答
网友
1楼 · 发布于 2024-09-30 00:25:15

服务器似乎像HTTP/0.9那样直接用数据进行响应,而不提供状态代码。显然urllib.request不支持这一点。幸运的是,HTTP/0.9是一个简单的协议,因此使用普通套接字应该很容易:

import socket
from io import BytesIO

conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.connect(('192.168.1.2', 80))
conn.send(b'GET /state.xml\r\n')
buffer = BytesIO()
while True:
    chunk = conn.recv(4096)
    if chunk:
        buffer.write(chunk)
    else:
        break
data = buffer.getvalue()

相关问题 更多 >

    热门问题