当前位置:   article > 正文

用 Python 抓取 bilibili 弹幕并分析!_b站弹幕爬取

b站弹幕爬取

01 实现思路

首先,利用哔哩哔哩的弹幕接口,把数据保存到本地。接着,对数据进行分词。最后,做了评论的可视化。

02 弹幕数据

平常我们在看视频时,弹幕是出现在视频上的。实际上在网页中,弹幕是被隐藏在源代码中,以XML的数据格式进行加载的。

比如:

https://comment.bilibili.com/123072475.xml

一个固定的url地址 + 视频的cid + .xml

只要找到你想要的视频cid,替换这个url就可以爬取所有弹幕了(b站大部分网页给出的字幕限制是1000条)。

一个视频的cid在哪里呢?

右键网页,打开网页源代码,搜索 "cid": 就能找到:

03 保存数据到本地

有了数据的接口链接,我们就可以利用request模块,获取数据了。

然后,再利用xpath简单的解析xml,就可以把所有的弹幕信息汇总到一个列表里了。最后,把列表转化成dataframe,保存到本地。

  1. # 许嵩新歌《雨幕》
  2. # bilibili视频弹幕文件
  3. url = 'https://comment.bilibili.com/123072475.xml'
  4. # 发送请求
  5. response = requests.get(url)
  6. xml = etree.fromstring(response.content)
  7. # 解析数据
  8. dm = xml.xpath("/i/d/text()")
  9. print(dm) # list
  10. # 把列表转换成 dataframe
  11. dm_df = pd.DataFrame(dm, columns=['弹幕内容'])
  12. print(dm_df)
  13. # 存到本地
  14. # 解决了中文乱码问题
  15. dm_df.to_csv('雨幕-弹幕.csv', encoding='utf_8_sig')

保存的csv数据:

04 对数据进行分词

制作词云前,需要把弹幕数据进行分词。

关于jieba分词,可以参考:

https://blog.csdn.net/dnxbjyj/article/details/72854460

  1. # jieba分词
  2. dm_str = " ".join(dm)
  3. words_list = jieba.lcut(dm_str) # 切分的是字符串,返回的是列表
  4. words_str = " ".join(words_list)

05 词云可视化

通过创建词云对象、设置词云参数,最终生成图片,保存到本地。

  1. # 读取本地文件
  2. backgroud_Image = plt.imread('1.jpg')
  3. # 创建词云
  4. wc = WordCloud(
  5. background_color='white',
  6. mask=backgroud_Image,
  7. font_path='./SourceHanSerifCN-Medium.otf', # 设置本地字体
  8. max_words=2000,
  9. max_font_size=100,
  10. min_font_size=10,
  11. color_func=random_color_func,
  12. random_state=50,
  13. )
  14. word_cloud = wc.generate(words_str) # 产生词云
  15. word_cloud.to_file("yumu.jpg") #保存图片

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号