[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在线抓取百度词典的翻译结果翻译单词

    这段代码通过抓取百度词典的翻译结果达到翻译单词的目的 这个小工具使用Python语言编写完成,其中使用到这 些类库(urllib,BeautifulSoup ),前者主要负责网络通讯方面,后者负责HT ...

  2. python爬歌词_python爬虫抓取某易云音乐歌词,从此不在下载

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...

  3. python判断成语_python正则表达式抓取成语网站

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

  4. 梦幻西游python验证成语_python正则表达式抓取成语网站

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

  5. python爬取斗鱼_python selenium爬取斗鱼所有直播房间信息过程详解

    还是分析一下大体的流程: 首先还是Chrome浏览器抓包分析元素,这是网址:https://www.douyu.com/directory/all 发现所有房间的信息都是保存在一个无序列表中的li中, ...

  6. python趣图_Python爬虫抓取暴走漫画上GIF趣图的代码

    本节内容: python爬虫实现代码 用 python3.3 实现的爬虫,主要爬取暴走漫画上的GIF趣图. 方便地下载很有意思的gif以便离线观看. 主要用到了 urllib.request 和 Be ...

  7. python登录网页_Python如何爬取需要登录的页面

    用Cookies保存登录状态实现部分反反爬机制 使用cookies:直接将cookies信息放入到headers中 直接封装cookies    ,然后requests.请求(cookies = {  ...

  8. python天涯帖子_python多线程抓取天涯帖子内容示例

    #coding:utf-8 import urllib import re import threading import os,time class Down_Tianya(threading.Th ...

  9. 爬虫python下载电影_python爬虫抓取电影天堂最新电影

    该小脚本实现对电影天堂网站的最新电影查找.from bs4 import BeautifulSoup import urllib import re url= 'http://www.ygdy8.ne ...

最新文章

  1. python无限次输入_在Raspberry Pi上的Python用户输入无限循环内部输入时很多输入错过了输入...
  2. 基于FFT的信号频谱分析
  3. linux学习-用户的特殊 shell 与 PAM 模块
  4. css background-position
  5. 基于Hexo+GitHub Page搭建免费个人博客教程
  6. Datatable/Dataset 转 JSON方法
  7. mfc怎么改按钮的按下状态_【荐读】马桶上一大一小的按钮该怎么按?原来这些年都错了...
  8. 柱状图中xy轴怎么出现_如果制砂机设备在工作中出现堵料现象该怎么办?
  9. 无法从计算机验证正在安装驱动,如何修复正在安装的驱动程序未在英特尔计算机上为此计算机验证 | MOS86...
  10. 黄大刀 :机房建设主要标准规范的介绍
  11. linux下复制文件并重命名,linux复制文件并修改文件名
  12. 7-36 韩信点兵 (10分)
  13. ARM_kafka搭建
  14. 用java写修改器_一些修改器1
  15. java实现手写签名_手写签字,保存笔迹到图片
  16. Linux应用程序开发 基础知识
  17. 串口通信(unity,VS通用)
  18. C语言随机数:rand()和srand(time(NULL))的使用
  19. PTA-整除光棍(C语言)
  20. python 人脸识别库儿童_GitHub - f02/face_collection: python的face_recognition人脸识别库的使用...

热门文章

  1. 初三物理光学知识点总结_高中物理光学知识点总结|初中光学知识点总结
  2. 小程序模板中的data里面的...item是什么意思
  3. 低代码构建物联网平台,让物联网项目更简单
  4. 职业院校物联网实训室建设方案研究
  5. [读书笔记]《SQL基础教程》
  6. 支付宝积分兑换的扫地机器人好用_平安28会员日活动又来了!刷卡换扫地机器人,外加网付7倍积分 - 叉子网赚博客...
  7. php敏感字符串过滤_PHP实现的敏感词过滤方法
  8. Linux中的Java项目服务器无故关闭
  9. android自定义游戏闯关图,Android开发之儿时的回忆——拼图小游戏
  10. 班主任对学生的成绩分析