哇靠,这些数据疯狂变化,该怎么爬取?
有些朋友遇到的一些网站
和以往不太相同
这些数据是实时变化的
比如
文字直播的数据
正在直播的弹幕
股票的指数行情
正在聊天的数据
...
这些数据因为具有时效性
所以就不能像普通网站一样
后台久久更新一次
等用户访问再将新数据渲染到网页
在网页上要实现这种
实时变化的数据
一般来说有以下两种方式
轮询
这种方式就是
用 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
记得关注
么么哒
猜你还想看