下面是用Python做一个哔站小姐姐词云跳舞视频的完整攻略:
准备工作
- 安装Python,下载地址:https://www.python.org/downloads/ 。
- 安装必要的库,如jieba、wordcloud、numpy等。
pip install jieba
pip install wordcloud
pip install numpy
步骤一:获取数据
- 打开哔站网站,找到你想制作词云的小姐姐的主页;
- 在浏览器中按F12进入开发者模式,分析该页面,找到抓取该小姐姐发布的所有动态的接口,例如:
https://api.bilibili.com/x/space/arc/search?mid=XXXX&pn=1&ps=25&jsonp=jsonp&order=pubdate&callback=__jp1
其中mid为该小姐姐的用户id。我们需要抓取的是data部分的所有数据;
- 使用Python的requests库抓取该接口的数据,并保存到本地文件中,示例代码如下:
```python
import requests
url = 'https://api.bilibili.com/x/space/arc/search?mid=XXXX&pn=1&ps=25&jsonp=jsonp&order=pubdate&callback=__jp1'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
with open('data.json', 'w', encoding='utf-8') as f:
f.write(response.text.lstrip(' \n\t(').rstrip(');'))
```
步骤二:数据处理和分析
- 读取data.json文件,并解析数据;
- 提取出该小姐姐发布过的所有动态的文本信息;
- 使用jieba库进行中文分词,并统计每个词出现的频率;
- 使用wordcloud库生成词云图,并保存到本地文件中,示例代码如下:
```python
import json
import jieba
import numpy as np
from PIL import Image
from wordcloud import WordCloud
with open('data.json', 'r', encoding='utf-8') as f:
content = f.read()
str_data = json.loads(content)['data']['list']
text = ""
for data in str_data:
text += data['title'] + " "
cut_text = jieba.cut(text)
result = " ".join(cut_text)
mask = np.array(Image.open('girl.png'))
wordcloud = WordCloud(
font_path='msyh.ttc',
background_color='white',
mask=mask
).generate(result)
wordcloud.to_file('girl_wordcloud.png')
```
步骤三:视频制作
- 使用moviepy库创建一个用于跳舞的小姐姐的视频素材;
- 将步骤二生成的词云图嵌入到视频中;
- 将小姐姐的视频和词云视频合并,生成最终的视频,示例代码如下:
```python
import moviepy.editor as mpe
video = mpe.VideoFileClip('girl.mp4')
duration = video.duration
wordcloud_clip = mpe.ImageClip('girl_wordcloud.png').set_duration(duration-1)
wordcloud_clip = wordcloud_clip.resize(width=int(video.w * 3/4)).set_pos('center')
final = mpe.CompositeVideoClip([video, wordcloud_clip])
final.write_videofile('girl_wordcloud_video.mp4', fps=30)
```
至此,用Python做一个哔站小姐姐词云跳舞视频就完成了。
示例说明1:
如果想制作其他小姐姐的词云跳舞视频,只需要修改步骤一中的接口链接和该小姐姐的用户id即可。如下所示:
url = 'https://api.bilibili.com/x/space/arc/search?mid=XXXX&pn=1&ps=25&jsonp=jsonp&order=pubdate&callback=__jp1'
示例说明2:
如果想修改词云图的形状,可以使用不同形状的图片作为mask。注意,图片需要是黑白色的才能正确制作词云,示例代码如下:
mask = np.array(Image.open('girl.png'))
wordcloud = WordCloud(
font_path='msyh.ttc',
background_color='white',
mask=mask
).generate(result)
其中,girl.png就是用于生成词云图的mask图片。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Python做一个哔站小姐姐词云跳舞视频 - Python技术站