连接为ws开头的url Python爬取websocket数据过程示范

# 爬取之前必须 注意需要装 2 个 包
pip install websocket
pip install websocket-client  # 这个虽然在代码表面中没用,但是这个包不能少

适用于任何版本

先分析要求

1 如何鉴别 所爬取数据为websocket数据,也就是 时时数据。
首先 按 f12 查看网页源码,选中 netwoek ,清空(clear),选中WS,如图所示
之后 刷新网页,发现WS中还有数据,那说明,你爬取的数据为Websocket时时数据。
如图所示
在这里插入图片描述
2 首先要确认的一点,socket连接 建立后是要先向服务器发送一条数据,等服务器回复,之后再建立的基础上再发(向服务器),服务器再回复数据的过程。
所以要先向服务器发送数据,(每个爬取的url不同,所起始发的数据也不同,这些都可以通过浏览器的 WS下的显示可读取,socket连接是需要时间的所以要在WS这个见面等待1-3分钟 看规律)

所以 我爬取的数据 起始发的数据为
‘201500010409[7]Net1.briLeModbus.18401646297__江苏_分区2_变压器___@总有功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@总无功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@当月有功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@当月无功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@当月最大负荷,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@历史最大负荷,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@历史最大漏电流,Net1.briLeModbus.18401646297__江苏_分区2_变压器___#设备通讯状态’

之后向服务器发送的数据为
201500110000
如下图
在这里插入图片描述
具体代码如下 因为是公司后台所以URL连接不能给大家共享,但是 开头都是WS之类的,这点我没写错。

import time
from websocket import create_connection
url = 'ws://xxx.xxx.xx.xxxx:xxxx/'
while True:  # 一直链接,直到连接上就退出循环
    time.sleep(2)
    try:
        ws = create_connection(url)
        ws.send(
            '201500010409[7]Net1.briLeModbus.18401646297__江苏_分区2_变压器___@总有功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@总无功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@当月有功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@当月无功电度,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@当月最大负荷,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@历史最大负荷,Net1.briLeModbus.18401646297__江苏_分区2_变压器___@历史最大漏电流,Net1.briLeModbus.18401646297__江苏_分区2_变压器___#设备通讯状态')
        break
        # 连接建立就退出
    except Exception as e:
        print('连接异常:', e)
        continue
while True:  # 连接上,退出第一个循环之后,此循环用于一直获取数据
    ws.send('201500110000')
    response1 = ws.recv()
    print(response1,"返回的数据")
    # 这里数据处理和截取就不讲了 ,要求不同处理不同

数据演示

在这里插入图片描述
想爬数据为 905812 总有功电度等数据。
在这里插入图片描述
爬出数据 从图中可看出 我爬取成功了。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章