前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
本次目的:采集tx短片弹幕,并且做词云图可视化分析
这个不少漫迷应该都看过吧~
哪里都好,就是更新太慢了一点,剧情磨蹭了一点,哎
那今天我们就来采集一下它的弹幕吧,看看其他小伙伴的反应怎么样~
知识点介绍:
-
基本思路流程
-
requests模块的使用
-
pandas读取表格数据
环境介绍:
-
python 3.8
-
pycharm
-
requests >>> pip install requests
-
pandas >>> pip install pandas
-
jieba
-
stylecloud
如果安装python第三方模块:
-
win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
-
在pycharm中点击Terminal(终端) 输入安装命令
原理:
模拟成 浏览器 / 客户端 向 服务器 发送网络请求
如何去实现一个案例:
找数据
静态的数据: 如果在网页源代码当中能够找到的内容 静态的数据
动态的数据: 找不到就是动态的
代码实现过程:
-
发送请求
-
获取数据
-
解析数据
-
保存数据
🎯 博主所有文章素材、解答、源码、教程领取处:点击
代码展示
采集数据
import requests # 发送请求 第三方模块
import csv # 内置模块 保存数据
f = open('弹幕.csv', mode='a', newline='', encoding='utf-8-sig')
csv_writer = csv.writer(f)
csv_writer.writerow(['nick', 'create_time', 'content'])
请求头
: 伪装
键
: 拼音
值
: 字
{'user-agent': 'Mozilla/5.0....'}
Python叫做字典 存储数据的
列表也是存储数据的 []
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
for i in range(0, 100):
请求方法: GET
1. 发送请求
函数传参 默认位置传参, 指定参数传参
response = requests.get(url, headers=headers)
2. 获取数据
<Response [200]>: 请求成功
.text:
只要是文本内容 都可以用.text
.content:
获取二进制数据, 如果当你访问的链接为 图片/视频/音频
.json():
只支持 {}/[] 取出来之后的数据 要么是字典 要么是列表 要么就是报错
json_data = response.json()
3. 解析数据 提取数据
字典(可以通过键取值) 和 列表 的取值方式
[1,2,3,4,5,6,7]
barrage_list = json_data['barrage_list']
for barrage in barrage_list:
content = barrage['content']
nick = barrage['nick']
create_time = barrage['create_time']
print(nick, create_time, content)
4. 保存数据
csv_writer.writerow([nick, create_time, content])
词云图
import pandas as pd # 第三方模块
import jieba
import stylecloud
# 1. 导入数据
df = pd.read_csv('弹幕.csv')
def get_cut_words(content_):
# 定义停用词的表
stop_words = []
with open('stop_words.txt', 'r', encoding='utf-8-sig') as f:
lines = f.readlines()
for line in lines:
stop_words.append(line.strip())
# 添加关键词
my_words = ['666', '某音']
for i in my_words:
jieba.add_word(i)
word_num = jieba.lcut(content_.str.cat(sep='。'), cut_all=False)
word_num_selected = [i for i in word_num if i not in stop_words and len(i) >= 2]
return word_num_selected
text = get_cut_words(df['content'])
stylecloud.gen_stylecloud(
text=' '.join(text),
collocations=False,
font_path=r'C:\Windows\Fonts\msyh.ttc',
icon_name='fab fa-youtube',
size=768,
output_name='video.png'
)
推荐往期文章
🎯 博主所有文章素材、解答、源码、教程领取处:点击
对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~
python小介绍:
python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。
python数据分析前景:
用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资
python基础自测题:
Python 800 道习题 (°ー°〃) 测试你学废了嘛
最后推荐一套Python视频给大家,希望对大家有所帮助:
全套教程!你和大佬只有一步之遥【python教程】
尾语
要成功,先发疯,下定决心往前冲!
学习是需要长期坚持的,一步一个脚印地走向未来!
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝