python爬取斗鱼弹幕_Python爬取斗鱼的弹幕,看看奇葩网友都说了些什么

0.前言

前几天(寒假前咯)闲着无聊,看到舍友们都在看斗鱼TV,虽然我对那些网络游戏都不是非常感兴趣,但是我突然间想到,如果我可以获取上面的弹幕内容,不就有点意思了么?

1.分析阶段

如果我想要抓取网页上面的东西,无非就是两种方法

使用浏览器,手工(自己点击)或者非手工(使用JS脚本),存取我想要的东西。

编写HTTP客户端(斗鱼无HTTPS通讯)

第一种方法是万能的,但显然是不行的, 原因如下:

手动保存实在是不可行,程序员不为也。

浏览器与本地交互有限,换而言之,也就是即使我抓取了对应的弹幕,我也没有办法解决持久化的问题。

假设你选择的是Chrome或者firefox浏览器,也不是不能实现持久化,但这需要写扩展,Chrome扩展没有写过,也不是很感兴趣。

第二种方法显然是一个正常的程序员的做法。

语言选用Ruby

写一个客户端,也就是写一个小爬虫,使用的场景:

用户在终端执行命令

gem install danmudanmu douyu [room_id/url]#比如

danmu douyu qiuri

danmu douyu http://www.douyutv.com/13861

然后就可以在终端欣赏弹幕咯.

050826ef7610

Screen Shot 2016-02-09 at 12.23.15 PM.png

回想一下抓取网站的方法

四步走:请求网页(原始数据) - 提取数据(提纯数据) - 保存数据 - 分析数据

很显然,只要解决了请求网页,其他的也就无非解析和SQL语句什么的。

1.1.斗鱼TV弹幕抓取的思路确定

如果是像我上面说的那么简单,也就不必再写一篇文章。毕竟,网页小爬虫没有什么技术含量。分布式爬虫才有。

通常情况下的网页小爬虫无非要解决如下问题:

请求,如果对方有一定策略的反爬虫,那需要反反爬虫。比如,

header带上host,带上refer,带上其他

需要验证,那就申请用户名和密码,然后登陆

如果在登录时期有防跨站机制,那就先获取一次登录页面,然后解析出token,带上对应的token然后登陆。

在程序中加入Log,并且存到本地。防止出现各种各样的反爬虫机制ban掉了程序,从而方便进行下一步防反爬虫对策。

并且,由于请求响应机制的存在,通常情况下,每一个请求对应一个响应,如果出错了,要么超时,要么有状态码,所以普通的web爬虫也相对而言比较容易些。

那么,斗鱼TV的站点是不是这样子的就能够容易爬取呢?

你猜到了,答案是“不是”。

由于弹幕具有实时性,就决定了斗鱼TV的弹幕无法通过保存完整指定时间端弹幕的XML(比如BILIBILI的一个视频弹幕是存在一段xml中的)或者Json数据来显示弹幕。要不然的话,那主播操作很出色的时候,观众的弹幕岂不是无法实时显示了么?

那么,肯定就是WebSocket了,于是,我一如既往的打开F12,查看网络流量。

正如你想到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值