Python模拟浏览器No.3

               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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值