哇靠,这些数据疯狂变化,该怎么爬取?

有些朋友遇到的一些网站

和以往不太相同

这些数据是实时变化的

比如

文字直播的数据

正在直播的弹幕

股票的指数行情

正在聊天的数据

...

这些数据因为具有时效性

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

后台久久更新一次

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

在网页上要实现这种

实时变化的数据

一般来说有以下两种方式

轮询

这种方式就是

用 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

记得关注

么么哒

猜你还想看

(0)

相关推荐