美文网首页
爬取斗鱼弹幕

爬取斗鱼弹幕

作者: 我是来捕鱼的 | 来源:发表于2018-12-16 10:05 被阅读25次

    这次爬取斗鱼弹幕,想的之后在对海量弹幕进行数据分析,作图做表。
    首先想的是打开斗鱼直播间,想从F12中看是否能找到相应的api,但是发现没有一个api是返回弹幕数据的,再检查HTML,发现弹幕数据是在li标签里一个一个动态加载上去的,但是找不到相应的js代码。后来百度之后才知道是flash的socket来获取数据的,遂跳入socket坑。看了斗鱼的协议文档,仿着代码敲出来却发现返回一对byte(unicode)数据,还要进行转换。但是数据回复码是错误的,后来改正后又发现没有数据返回,初步原因认为是没有加入传输心跳数据导致的,或者是数据阻塞。需要添加多进程

    一、socket(客户端开发)
    1、TCP链接

    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    

    2、链接

    socket.connection(address)  address是元组(host,port)
    

    3、获取数据

    socket.recv(bufsize[,flag])
    

    4、传输数据

    socket.send(string[,flag])
    socket.sendall(string[,flag])
    

    二、byte unicode utf-8 等编码
    1、Python 3的bytes/str之别
    文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。

    string与bytes转换

    2.int.from_bytes和int.to_bytes函数介绍
    int.from_bytes 将bytes转化为int
    int.to_bytes将int转化为bytes

    三、多线程
    使用threading库

    t1 = threading.Thread(target = xx,args = (xx,xx))
    t1.start()
    

    四、IP代理
    在一次手贱的操作中,IP被斗鱼服务器限制了一次连接只能收到一个消息,所以着手进行IP代理操作。

    相关文章

      网友评论

          本文标题:爬取斗鱼弹幕

          本文链接:https://www.haomeiwen.com/subject/njyusftx.html