LVS 设计模式 properties 阿里巴巴 aircrack-ng bash uitableview redis常用语句 jboss arm vue中文 vue引入组件 网络营销视频教程 jquery each js鼠标离开事件 java算法培训 hadoop创建文件夹 反函数的二阶导数 python逻辑运算符 python最大值 java在线课程 kafka中文教程 微信摇骰子表情包 fireworks8 笔记本测试软件 苹果x银色 c4d文字 pr动态字幕 python求和 流媒体下载 qq黑客软件 appdata是什么文件夹 lol不能全屏 拍照姿势的摆法女 苹果手机怎么看内存 iphone组装机 pip安装教程 拼多多推广软件 jdk下载64位 数组对象去重
当前位置: 首页 > 学习教程  > python

爬取b站弹幕做词云图

2021/2/6 22:22:29 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

先上效果图 这次翻车了,因为我把图片后面加了个jpg,这个错误让我卡了三天,找了十几个小时,挺笨的测试了很多次,还把我能找到的文件打开方式都试一遍,属实蠢,刚刚在b站看沙雕视频突然恍然大悟,删了后缀名一次就通过了(代码有一半注释了,我改了多少次可想而知) 找到弹幕接口 我…

先上效果图
在这里插入图片描述
这次翻车了,因为我把图片后面加了个jpg,这个错误让我卡了三天,找了十几个小时,挺笨的测试了很多次,还把我能找到的文件打开方式都试一遍,属实蠢,刚刚在b站看沙雕视频突然恍然大悟,删了后缀名一次就通过了(代码有一半注释了,我改了多少次可想而知)

找到弹幕接口

我没有在b站找到弹幕文件,但是b站给了接口,我实战的是让子弹飞的弹幕
https://www.bilibili.com/bangumi/play/ss12548/from=search&seid=6751462569546065116
兄弟,太客气了,客气吗?这还客气
在这里插入图片描述
heatbeat 里面有个cid 复制下来,下面是接口
url = ‘https://commentilibili.com/cid.xml’

这次的项目很简单,不讲了,上代码

import os
import requests
import re
import urllib
import wordcloud #导入词云库
import numpy as np
import matplotlib.pyplot as plt
import jieba
import wordcloud
import matplotlib
import pandas as pd
import jieba.analyse
import imageio
import jieba.posseg as pseg
import numpy
from PIL import Image
url = 'https://comment.bilibili.com/cid.xml'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56'
}
# 网页开源,不需要设置代理agent,我也懒得找了
response = requests.get(url,headers=headers)
response.encoding = "utf-8"
# print(response.text)
danmus = re.findall(r'">(.*?)</d>', response.text, re.S)
# print(danmus)
# cipin = pd.DataFrame({'danmu':comments_clean})

# cipin['danmu'].value_counts()


# for danmu in danmus :
#     # print(danmu)
#     file = open(full_path, 'w')  # w 的含义为可进行读写
#     file.write(danmu)  # file.write()为写入指令
# # file.close()
# pic = Image.open('D:\\让子弹飞.jpg')  #选定图片样子,生成的便是这个样子
# cloud_mask = np.array(pic)
#3)绘制词云
# plt.rcParams["font.sans-serif"]=["SimHei"]
danmu2 = ''.join(danmu for danmu in danmus)#把所有的弹幕都合并成一个字符串
words = list(jieba.cut(danmu2))#分词
fnl_words = [word for word in words if len(word)>1]#去掉单字
st1 = re.sub('[,。、“”‘ ’]','',str(fnl_words)) #使用正则表达式将符号替换掉。
# print(fnl_words)
# print(st1)
# for fnl_word in fnl_words :
#     print(fnl_word)
cipin = pd.DataFrame({'ciping':fnl_words})
# print(cipin['ciping'].value_counts())#查看词频
cipin['ciping'].value_counts()
danmus2= ''.join(element for element in fnl_words)#把所有的弹幕都合并成一个字符串
words = list(jieba.cut(danmu2))#分词
fnl_words2 = [word for word in words if len(word)>1]#去掉单字
# print(danmus2)# 输出完整的大句子
img = Image.open(r'D:\让子弹飞.jpg')
mask = np.array(img)
# mask = np.array(Image.open('D:\让子弹飞.jpg'))
wc = wordcloud.WordCloud(
    background_color = 'white',
    width = 600,
    margin = 1,
    height = 120,
    mask = mask,
    font_path = 'C:\Windows\Fonts\STFANGSO.TTF',
)
# con = wc.generate(st1)
# plt.imshow(con)
# plt.axis("off")
wc.generate_from_text(' '.join(fnl_words))#绘制图片
plt.imshow(wc)
plt.axis('off')
plt.figure()
plt.show()  #显示图片
wc.to_file(r'D:\danmu_pic.png')

这次水了,认认真真继续写酷狗音乐的


本文链接: http://www.dtmao.cc/news_show_2000034.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?