相关文章
强势四联
还有一张?在垃圾桶里
一、获取数据
上次写了篇爬取假吃强视频评论并进行数据可视化处理的博客,有小伙伴质疑真实性,那么此次本人将对假吃强所有视频的标题和描述进行可视化处理
接口信息:获取UP主所有视频信息
参数:
- mid : UP主的编号
- pn : page number 页码
- ps : 每页显示的条数
此处为爬取假吃强所有视频信息的接口URL为:
https://api.bilibili.com/x/space/arc/search?mid=246534959&pn=1&ps=100
即爬取第一页视频的信息,共100条.使用Postman测试:
可以看见是没有问题的.接下来将所有视频信息爬取下来存入JSON文件中
def get_json(mid, pn, ps):
url = 'https://api.bilibili.com/x/space/arc/search?mid=%s&pn=%s&ps=%s' % (mid,pn, ps)
res = requests.get(url, 'utf-8')
# 将获取的数据转换为dict格式
data = res.json()
file_name = '%s-%s.json' % (mid, pn)
# JSON文件格式为uttf-8
with open('json/' + file_name, "w", encoding='utf-8') as fp:
# 以JSON格式保存文件,indent决定JSON缩进,ensure_ascii确保汉字不被转换为编码
fp.write(json.dumps(data, indent=4, ensure_ascii=False))
print(pn + "爬取完成")
二、数据分析
接下来提取每个JSON文件的数据,将假吃强每个视频的标题和简介分别写入两个txt文件中
def filter_data(mid, pn):
# 读取json文件内容,返回字典格式
with open('json/%s-%s.json' % (mid, pn), 'r', encoding='utf8') as fp:
data = json.load(fp)
data = data["data"]["list"]["vlist"]
fp.close()
with open('title.txt', 'a', encoding='utf-8') as f1, open('description.txt', 'a', encoding='utf-8') as f2:
for i in data:
title = i["title"].replace('\n', '').replace('\r', '')
description = i["description"].replace('\n', '').replace('\r', '')
# 写入标题
f1.write(title + '\n')
# 过滤掉无效数据
if description == '-' or description == '':
continue
# 写入简介
f2.write(description + '\n')
f1.close()
f2.close()
好的,现在开始关键字分析
字云图
def analyze_txt(file):
# 统计字出现次数的字典
num = {}
# 非统计范围
with open(file, 'r', encoding='UTF-8') as text:
for line in text:
for i in line:
# 如果是汉字
if u'\u4e00' <= i <= u'\u9fa5':
# 如果该字已经被统计
if i in num.keys():
num[i] += 1
else:
num[i] = 1
wc = wordcloud.WordCloud(
font_path='simsun.ttc',
max_words=1000,
max_font_size=2000,
# 设置了背景,宽高,
width=1000,
height=880,
background_color="white"
)
wc.generate_from_frequencies(num)
wc.to_file("%s-word.jpg" % (file))
- 标题
孝子们还洗吗?不是大胃王吃饭是按斤算的吗?按斤算吃的才过瘾.右下角真实
- 简介
按一天一顿算,吃一年胃不炸,那只能是垃圾桶炸了
小伙…算了算了
词云图
- 标题
小伙一顿不是一斤就是二斤要不三斤,再来鸡腿排骨狂吸才过瘾
- 简介
假吃强今天咋不更新了
说本人乱锤人的,本人可以把数据发给你,所有数据均来自B站假吃强的主页