[Python] 纯文本查看 复制代码'''

文件名:爬取斗鱼直播间信息到jsonline文件.py

'''

from __future__ import unicode_literals

import multiprocessing

import socket

import time

import re

import requests

from bs4 import BeautifulSoup

import json

# 配置socket的ip和端口

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

host = socket.gethostbyname("openbarrage.douyutv.com")

port = 8601

client.connect((host, port))

# 获取用户昵称及弹幕信息的正则表达式

danmu = re.compile(b'type@=chatmsg.*?/nn@=(.*?)/txt@=(.*?)/.*?/level@=(.*?)/.*?/bnn@=(.*?)/bl@=(.*?)/')

def sendmsg(msgstr):

'''

客户端向服务器发送请求的函数,集成发送协议头的功能

msgHead: 发送数据前的协议头,消息长度的两倍,及消息类型、加密字段和保密字段

使用while循环发送具体数据,保证将数据都发送出去

'''

msg = msgstr.encode('utf-8')

data_length = len(msg) + 8

code = 689

msgHead = int.to_bytes(data_length, 4, 'little') \

+ int.to_bytes(data_length, 4, 'little') + int.to_bytes(code, 4, 'little')

client.send(msgHead)

sent = 0

while sent < len(msg):

tn = client.send(msg[sent:])

sent = sent + tn

def start(roomid):

'''

发送登录验证请求后,获取服务器返回的弹幕信息,同时提取昵称及弹幕内容

登陆请求消息及入组消息末尾要加入\0

'''

msg = 'type@=loginreq/roomid@={}/\0'.format(roomid)

sendmsg(msg)

msg_more = 'type@=joingroup/rid@={}/gid@=-9999/\0'.format(roomid)

sendmsg(msg_more)

print('---------------欢迎连接到{}的直播间---------------'.format(get_name(roomid)))

while True:

data = client.recv(1024)

danmu_more = danmu.findall(data)

if not data:

break

else:

with open(format(get_name(roomid))+time.strftime('%Y.%m.%d',time.localtime(time.time()))+'直播弹幕', 'a') as f:

try:

for i in danmu_more:

dmDict={}

#print(i)

dmDict['昵称'] = i[0].decode(encoding='utf-8', errors='ignore')

dmDict['弹幕内容'] = i[1].decode(encoding='utf-8', errors='ignore')

dmDict['等级'] = i[2].decode(encoding='utf-8', errors='ignore')

dmDict['徽章昵称'] = i[3].decode(encoding='utf-8', errors='ignore')

dmDict['徽章等级'] = i[4].decode(encoding='utf-8', errors='ignore')

dmJsonStr = json.dumps(dmDict, ensure_ascii=False)+'\n'

#print(dmDict['昵称'])

print(dmDict['弹幕内容'])

f.write(dmJsonStr)

danmuNum = danmuNum + 1

except:

continue

def keeplive():

'''

发送心跳信息,维持TCP长连接

心跳消息末尾加入\0

'''

while True:

msg = 'type@=mrkl/\0'

sendmsg(msg)

time.sleep(45)

def get_name(roomid):

'''

利用BeautifulSoup获取直播间标题

'''

r = requests.get("http://www.douyu.com/" + roomid)

soup = BeautifulSoup(r.text, 'lxml')

return soup.find('a', {'class', 'Title-anchorName'}).string

# 启动程序

if __name__ == '__main__':

room_id = input('请输入房间ID: ')

p1 = multiprocessing.Process(target=start, args=(room_id,))

p2 = multiprocessing.Process(target=keeplive)

p1.start()

p2.start()

python 爬取直播弹幕视频_Python实现抓取斗鱼实时弹幕相关推荐

  1. python爬今日头条组图_python 爬虫抓取今日头条街拍图片

    1. 打开google浏览器,输入www.toutiao.com, 搜索街拍.html 2.打开开发者选项,network监看加载的xhr, 数据是ajax异步加载的,能够看到preview里面的da ...

  2. python爬取文本中的成语_python正则表达式抓取成语网站

    #anthor jiqunpeng #time 20121124 import urllib import re def getHtml(url): #从URL中读取html内容 page = url ...

  3. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  4. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  5. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频

    之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...

  6. python多线程爬虫 爬取多个网页_Python 多线程抓取网页

    最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术的实现. 1.larbin的URL去重用的很高效的bloom filter算法: 2. ...

  7. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  8. python爬取论坛付费内容_Python爬虫抓取论坛关键字过程解析

    前言: 之前学习了用python爬虫的基本知识,现在计划用爬虫去做一些实际的数据统计功能.由于前段时间演员的诞生带火了几个年轻的实力派演员,想用爬虫程序搜索某论坛中对于某些演员的讨论热度,并按照日期统 ...

  9. python爬人人贷代码视频_Python爬虫 - 人人贷散标

    前言这次爬的网站 [人人贷 - 散标](网贷p2p散标列表 - 人人贷官网) 是一个客户要求爬的,数据一共是148w多条,不过后来发现有绝大部分是无效数据,也就是那个页面不存在,不过我看网上很多人爬这 ...

  10. python爬取贴吧数据_Python爬虫——抓取贴吧帖子

    原博文 2016-11-13 23:13 − 抓取百度贴吧帖子 按照这个学习教程,一步一步写出来,中间遇到很多的问题,一一列举 首先, 获得 标题 和 贴子总数 # -*- coding:utf-8 ...

最新文章

  1. Django博客系统(状态保持)
  2. pandas dataframe缺失值(np.nan)处理:识别缺失情况、删除、0值填补、均值填补、中位数填补、加缺失标签、插值填充详解及实例
  3. sql between 效率高吗_B2增驾好吗
  4. .NET重构(四):窗体继承+模板方法,完美实现组合查询
  5. 想跑次高频策略?快来看看Numpy处理真格量化tick数据的技巧
  6. android requestmtu,android - 如何设置/获取/请求从Android到iOS或反之亦然BLE的MTU? - 堆栈内存溢出...
  7. 玩转 SpringBoot 2.x 整合 Mybatis
  8. 接口测试工具--apipost脚本讲解
  9. 要快乐的度过充满困难的一生——任总给陈珠芳及党委成员的一封信
  10. PHP修复输入验证代码中的漏洞
  11. WIN7 X64 如何删除计算机管理里面一些无效的服务
  12. 桌面版应用_【Nordic博文分享系列】开发你的第一个NCS(Zephyr)应用程序
  13. Android【报错】java.lang.RuntimeException: Unable to start activity Activity无法打开的问题
  14. docker(4):coreos+docker+rancher真厉害
  15. springboot的if else过多解决方案
  16. iPhone4S使用红雪最新iOS5平刷和降级教程
  17. 7.4 倒向随机微分方程-Feynman-Kac公式
  18. [xshell] xshell 及 xftp 官网无法下载解决
  19. android 优酷 api接口,腾讯优酷网站视频引用接口
  20. iphone快捷指令蚂蚁森林能量_iPhone“快捷指令”怎么玩?玩法太多,别让这个功能吃灰...

热门文章

  1. Chromium内核浏览器编译记(二)UI定制
  2. 自定义chromium浏览器
  3. 个计算机语言使用人数排行,语言使用人数排行_世界语言使用人数排名
  4. 解析一个PHP木马,PHP文件上传安全检测组件
  5. 树莓派4b控制机械手臂_STM32与树莓派(上位机)交互控制机械臂
  6. 应重视物联网的负面影响
  7. 日紫白飞星算法_年月日时紫白飞星算法
  8. temp在python里的意思_python temp是什么
  9. 南京大学计算机学院2019调剂,2019年南京大学考研调剂相关规定
  10. PT100恒流源电路及仿真