Python爬取B站十周年特辑视频弹幕数据,并绘制生成词云。(附源码)

本文介绍了如何使用Python爬取B站十周年特辑视频的弹幕数据,通过Request模块和XPath解析接口数据,然后利用bilibili_api库简化操作。在获取数据后,通过jieba分词和WordCloud库绘制词云。文章提供了安装教程、关键代码片段以及所需模块,包括video、user、dynamic和Request等。最后,作者分享了Python数据分析相关的学习资源。
摘要由CSDN通过智能技术生成

前言

今天用“Running Man”十周年特辑的视频,来做个获取弹幕的案例分享给大家,直接开整~

效果展示

在这里插入图片描述

开发工具

Python版本: 3.9.6

相关模块:

video模块

user模块

dynamic模块

Request模块

Xpath模块

以及python自身的模块

思路分析

1、弹幕数据接口

https://comment.bilibili.com/123072475.xml (一个固定的url地址 + 视频的cid + .xml)

2、利用Request模块,获取数据

3、利用Xpath解析数据

经过bilibili_api的封装,弹幕数据获取的部分仅用了一行代码:

danmu = video_info.get_danmaku()

相应的获取视频的基本信息和评论信息也是一样的便捷。

basic_info = video_info.get_video_info()
comments = video_info.get_comments(
Python爬取B站视频弹幕并制作成地图词云展示,需要几个步骤:首先抓取网页数据,然后处理弹幕内容,最后生成词云并将其放在地图上。这里是一个简化的示例,假设我们使用了`requests`、`BeautifulSoup`库用于网络请求和HTML解析,`lxml`库作为BeautifulSoup的一个替代选择,`wordcloud`和`geopandas`库来创建词云和地图,以及`pyecharts`库来展示地图。 ```python import requests from bs4 import BeautifulSoup import re import pandas as pd from wordcloud import WordCloud import geopandas as gpd from pyecharts import options as opts from pyecharts.charts import Map # 爬取B站弹幕数据 def get_bilibili_danmu(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') danmu_list = soup.select('.d-share .d-mid .c-danmu-item') # 提取丹字列表 return [danmu.text for danmu in danmu_list] # 清理并统计词频 def process_danmu(danmus): cleaned_danmus = [re.sub(r'\W+', '', danmu) for danmu in danmus] # 去除标点符号和空格 frequency = {word: cleaned_danmus.count(word) for word in set(cleaned_danmus)} return frequency # 创建词云 def create_wordcloud(frequency): wc = WordCloud(font_path='simhei.ttf', width=800, height=600, background_color='white').generate_from_frequencies(frequency) return wc.to_image() # 获取中国省份信息 china_province_data = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) # 使用词云数据绘制地图 def map_with_wordcloud(province_data, wordcloud_img): chart = Map() chart.add("", province_data['name'], china_province_data.geometry, maptype="China") img_option = opts.ImageOption(src=wordcloud_img) chart.options设置 = { "visualMap": { "max": max(frequency.values()), "inRange": {"symbolSize": [5, 10]}, }, "series": [{"type": "map", "label": {"show": False}, "itemStyle": img_option}] } chart.render("bilibili_danmu_map.html") # 示例用法 url = "https://www.bilibili.com/video/BV某个视频ID" # 替换为实际的视频URL danmus = get_bilibili_danmu(url) frequency = process_danmu(danmus) wordcloud_img = create_wordcloud(frequency) map_with_wordcloud(china_province_data, wordcloud_img)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值