type
status
date
slug
summary
tags
category
icon
password
最近通过各种方式研究了Binance公告板的作用,对于做crypto的短线交易具有一定的启发作用,各种利多或利空消息都会对对应的币种造成持续又短暂的上升或下降趋势。因此笔者决定利用python采取对Binance公告板的实时抓取监控,并且通过飞书群机器人发出通告及时作出手动交易。
本博客的技术点:
- 利用Selenium自动化实时爬取Binance Announcement页面
- 每当有新的公告发出时,飞书群机器人会作出反应通知
- 当驱动器失效时,会自动重启Selenium驱动
技术调查
Binance的网站(https://www.binance.com/zh-CN/support/announcement)存在一定的反爬机制,单纯的使用requests库抓是无法成功得到响应。
考虑到Selenium可以模拟Chrome驱动的打开方式获得网页内容,因此即使Selenium速度较慢,但公告发出对crypto标的的趋势影响有一定持续时间,因此直接采用Selenium也是acceptable。
技术实现
导入必要库
定义驱动设置
自定义爬取
添加飞书机器人
定时执行脚本
运行指令
通过nohup指令可以将脚本持续化运行在本地,防止因电脑长时间待机造成任务中止。
脚本产生的log日志将被记录在
bn_announcement.output
中。若想停止运行脚本,直接kill任务的pid即可。
风险提示
- Selenium的Chrome Driver在长时间运行过程中可能会突然中止session断开连接,因此一定要添加异常判断,然后重启Driver。
- 目前尚不明确Binance对此类爬取是否有次数限制,因此存在一定的被封锁ip的风险。
可改进空间
- 爬取时间
- 首次启动时因为包含了Driver的启动,因此抓取时间会较长,延迟达到8s左右。但在后续的爬取时,延迟会降到0.6-1.2s。因此首要的改进方向在于降低其延迟,以达到更快的公告提醒。
- 在脚本抓到新公告并推送飞书的过程中,由于使用了
requests.Post
,也存在1s多的延迟。改进点可能在多方面的考虑不同的消息推送机制,例如telegrame等。
- 多平台的公告
- 目前只进行了Binance的公告板监控,但其他交易所也同样会产生类似的作用。后期可能会对多个交易所例如okx同样进行监控以达到信息来源丰富化。
- 作者:Morgan Ren
- 链接:https://fantasy-ren.tech/about-me/article/binance-monitor
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。