有些朋友遇到的一些网站

和以往不太相同



这些数据是实时变化的



比如

文字直播的数据

正在直播的弹幕

股票的指数行情

正在聊天的数据

...







这些数据因为具有时效性

所以就不能像普通网站一样

后台久久更新一次

等用户访问再将新数据渲染到网页



在网页上要实现这种

实时变化的数据



一般来说有以下两种方式


轮询


这种方式就是

用 ajax 每隔一小段时间

去请求服务器的最新数据



只有你频繁勾搭服务器

它才会给你返回最新数据







另一种是



websocket


我们今天主要来说这个玩意

什么是 websocket 呢?



它是一种网络协议

我们熟知的协议有

http 、 ftp 这些

而 websocket 的协议是 ws



它可以做到的是

客户端与服务端的数据交互变得

实时



只要让前端和服务端握一次手

然后就可以和服务端建立长期的

连接



客户端握手订阅后

服务器只要有新的数据

就可以直接推送给客户端

是不是很主动咧







比如很多聊天室

就是用 socket 做到马上收到对方的消息









问题来了

对于这种

实时变换的数据

应该怎么爬呢



那么接下来就是

学习 python 的正确姿势





关于 websocket 的调试

我们可以在 Chrome 的调试面板中

选中 WS 进行过滤







当发现有 socket 连接的时候

就会出现这个







值得注意的是

这里返回的状态码是 101



和我们玩 http 略不同

http 成功响应的状态码为 200



点进去之后







你就可以看到

请求的 socket 地址

以及请求头相关信息



我们还可以点击右边的

Messages

来查看交互信息



看下面这里就是

websocket的信息收发






获取到这些之后

我们就可以使用 Python 来连接了



Python 有专门的库来操作 socket

比如 websocket-client、websockets



我们这次就来玩玩

websocket-client



pip install websocket-client



安装玩就可以直接使用了







关于 socket 的连接

一般都有这么几个回调方法




open 方法

会在服务器与我们链接成功后触发



message 方法

会在收到消息后触发



error 方法

会在连接过程中发生错误触发



close 方法

会在连接关闭的时候触发




接着我们就来体验一下吧

连接到 websocket 服务器







连接成功后我们就给服务器发送消息







在接收服务器消息这里获取







运行起来







这样就可以获取数据啦


对了

对于一些 wss 协议

可以使用这招搞定哦





ok

今天咱们就说到这里

那我们下回见咯

peace



记得关注

么么哒




猜你还想看