py获取《灵笼》第一集的弹幕———绘制词云图

简介: py获取《灵笼》第一集的弹幕———绘制词云图

访问弹幕的接口

前人栽树,后人乘凉。使用已经分析过的url链接进行get请求即可

需要:

  • 视频cid
  • 视频的oid
1.https://comment.bilibili.com/视频cid参数.xml
2.https://api.bilibili.com/x/v1/dm/list.so?oid=视频iod

heart中的cid参数查找

《灵笼》的第一集的url:https://www.bilibili.com/bangumi/play/ss22088/?from=search&seid=17394404948182677638

打开弹幕,查看network不断清除刷新,发现heartbeat随着弹幕的出现而不断出现

heartbeat的headers和post form数据

requestUrl:https://api.bilibili.com/x/click-interface/web/heartbeat

使用aid的参数:129528808,访问xml链接即可得到灵笼第一集的弹幕

url:https://comment.bilibili.com/129528808.xml

ok,进行get请求和正则提取出字幕

import requests,re
def compile_font(text):
    c=re.compile(r'p="(.*?)">(.*?)<',re.S)
    result=re.findall(c,text)
    print(result)
def request_post(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
        "origin": "https: // www.bilibili.com",
        "referer": "https://www.bilibili.com/bangumi/play/ss22088/?from=search&seid=17394404948182677638"
    }
    resp=requests.get(url,headers=headers)
    print(resp)
    text=resp.content.decode('utf-8')
    compile_font(text)
if __name__=='__main__':
    url="https://comment.bilibili.com/129528808.xml"
    request_post(url)

对弹幕和其发起者的id信息进行提取

点击查看历史弹幕oid的查找

点击查看历史弹幕

发现index相关的数据中和heartbeat的response有共同点

区别是这里多了时间的信息

heartbeat

{"code":0,
"message":"0",
"ttl":1
}

查看历史弹幕index

{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": [
    "2021-04-01",
    "2021-04-02",
    "2021-04-03",
    "2021-04-04",
    "2021-04-05",
    "2021-04-06",
    "2021-04-07",
    "2021-04-08",
    "2021-04-09",
    "2021-04-10",
    "2021-04-11",
    "2021-04-12",
    "2021-04-13"
  ]
}

requeurl:https://api.bilibili.com/x/v2/dm/history/index

三个参数:

  • type
  • oid
  • month

    三个参数

    oid参数访问接口即可得到字幕
    url:https://api.bilibili.com/x/v1/dm/list.so?oid=129528808
import requests,re
def compile_font(text):
    c=re.compile(r'p="(.*?)">(.*?)<',re.S)
    result=re.findall(c,text)
    print(result)
def request_post(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
        "origin": "https: // www.bilibili.com",
        "referer": "https://www.bilibili.com/bangumi/play/ss22088/?from=search&seid=17394404948182677638"
    }
    resp=requests.get(url,headers=headers)
    print(resp)
    text=resp.content.decode('utf-8')
    compile_font(text)
if __name__=='__main__':
    url="https://api.bilibili.com/x/v1/dm/list.so?oid=129528808"
    request_post(url)

对弹幕和其发起者的id信息进行提取

正则提取字幕写入txt

a+的参数是再txt文档追加

import requests,re
def compile_font(text):
    c=re.compile(r'p="(.*?)">(.*?)<',re.S)
    result=re.findall(c,text)
    for i in result:
        value=i[1]
        with open('words.txt','a+',encoding='utf-8') as f:
            f.write(value)
def request_post(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
        "origin": "https: // www.bilibili.com",
        "referer": "https://www.bilibili.com/bangumi/play/ss22088/?from=search&seid=17394404948182677638"
    }
    resp=requests.get(url,headers=headers)
    print(resp)
    text=resp.content.decode('utf-8')
    compile_font(text)
if __name__=='__main__':
    url="https://api.bilibili.com/x/v1/dm/list.so?oid=129528808"
    request_post(url)

写入成功

jieba分词wordcloud生成词云图

准备遮罩图为灵笼logo(其中白色部分不会被写入)

需要导入字体的路径,在C:\Windows\Fonts\挑选

import jieba
from wordcloud import WordCloud, ImageColorGenerator
from matplotlib import pyplot as plt
from PIL import Image
import numpy as np
with open('words.txt', 'r', encoding="UTF-8") as file1:
    content = "".join(file1.readlines())
 
# 分词 \n
content_after = "\n".join(jieba.cut(content, cut_all=True))
##添加的代码,把刚刚你保存好的图片用Image方法打开,
##然后用numpy转换了一下
images = Image.open("灵笼logo.png")
maskImages = np.array(images)
wc = WordCloud(font_path="C:\Windows\Fonts\simsun.ttc",#字体路径
               background_color="black",#一下是图片背景颜色字体大小及尺寸大小
               max_words=5000,
               max_font_size=50,
               width=600,
               height=600,
               mask=maskImages#遮罩图片 类比ps的剪切蒙版
              ).generate(content)
plt.imshow(wc)
wc.to_file('灵笼第一集的字幕.png')

生成词云图!


目录
相关文章
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
8月前
|
数据采集 机器学习/深度学习 存储
【亲测有用】数据中台数据质量管理能力演示
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
9月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【注意力机制篇】| 2023 MCAttention 多尺度交叉轴注意力 获取多尺度特征和全局上下文信息
RT-DETR改进策略【注意力机制篇】| 2023 MCAttention 多尺度交叉轴注意力 获取多尺度特征和全局上下文信息
211 2
RT-DETR改进策略【注意力机制篇】| 2023 MCAttention 多尺度交叉轴注意力 获取多尺度特征和全局上下文信息
|
8月前
|
人工智能 自动驾驶 算法
人工智能引发的新文明冲击:未来十年消失的职业!
在21世纪科技浪潮中,人工智能(AI)正以前所未有的速度改变生活方式和工作模式。未来十年内,预计30种传统职业如流水线工人、仓库拣货员、收银员等将逐渐消失,带来前所未有的挑战与机遇。本文探讨这一趋势,分析受影响的职业,并讨论人类如何在AI时代找到新定位。通过GAI认证提升技能,把握AI时代的机遇,共创辉煌未来。
|
12月前
|
安全 前端开发 数据库
Django框架
总的来说,Django 是一个非常优秀的 Web 框架,它为开发者提供了坚实的基础和丰富的功能,使得构建高质量的 Web 应用变得更加容易和高效。无论是初学者还是经验丰富的开发者,都可以从中受益,利用它来实现自己的创意和想法。
270 60
|
12月前
|
边缘计算 监控 安全
掌握Edge Computing:开启下一代云计算时代
随着5G与物联网的发展,数据处理需求剧增。边缘计算作为新兴计算模式,通过在网络边缘处理数据,减少延迟、提高响应速度、减轻数据中心负担,展现出降低延迟、减少带宽消耗、提高数据处理能力和增强数据安全性的优势。本文探讨了边缘计算的概念、优势及开发实践,包括选择平台、优化数据流、实现容错设计、保障安全隐私及监控维护等方面,并介绍了其在工业自动化、智能交通和远程医疗等领域的应用案例,旨在帮助读者掌握边缘计算,迎接下一代云计算时代的到来。
|
人工智能 算法 安全
智能时代的伦理困境
随着人工智能技术的迅猛发展,人类社会正面临着前所未有的伦理挑战。本文将深入探讨AI技术所带来的隐私泄露、数据安全、偏见与歧视以及失业问题等四大伦理困境,并从法律、政策和个人隐私保护等方面提出应对策略。同时,通过分析具体的AI应用案例,揭示伦理问题的复杂性和紧迫性,以期在技术与道德之间找到平衡点,确保AI技术的发展造福于全人类。
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
存储 缓存 监控
HPC Guard | 如何彻底解决OOM及资源浪费的难题?
芯片设计中常遇内存不足、资源利用率低等问题,导致项目延期。MemVerge HPC Guard通过实时监控、任务保护与恢复、智能调度等技术,显著提升资源利用率和任务连续性,解决芯片设计中的常见难题,保障项目顺利进行。
255 0
|
数据采集 Web App开发 JSON
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
296 0