Python使用WebSocket实例No.3
一、操作流程
- 将短链接https://m.tb.cn/h.eYMUIzZ?sm=666ff,通过浏览器自动转换成长链接获取url里的id。
- 创建一个WebSocket服务端简称S,两个WebSocke客户端简称A、B。
- A负责获取短链接,推送给S(保持长连接)
- S将监听到的数据推送给B。
- B模拟浏览器,并且将短链接在地址栏解析成长链接,获取id。
二、为什么这样操作
- 因为selenium每打开一次浏览器相当耗费时间和资源,这样做的好处只需要打开一次浏览器保持监听状态,如果有消息推送过来直接输入到浏览器里进行解析即可
三、client_B搭建
#下载geckodriver 浏览器驱动
#拷贝到python安装目录下
#pip install selenium //测试插件 用于浏览器启动
#pip install websocket_server //socket包
import time
from selenium import webdriver
from websocket_server import WebsocketServer
#启动浏览器
browser = webdriver.Firefox()
#新连接回调
def new_client(client, server):
print("New client connected and was given id %d" % client['id'])
#断开连接回调
def client_left(client, server):
print("Client(%d) disconnected" % client['id'])
#接受消息回调
def message_received(client, server, message):
browser.get(message)#浏览器打开url,
url = browser.current_url#获取解析后的url
print(url)
server.send_message(client, url)#推送给服务端,解析后的url
#运行服务
PORT=9501
server = WebsocketServer(PORT, "0.0.0.0")
#监听连接的客户端
server.set_fn_new_client(new_client)
# 接收客户端数据
server.set_fn_message_received(message_received)
# 断开客户端连接
server.set_fn_client_left(client_left)
#启动socket服务
server.run_forever()