python获取tx弹幕数据并制作词云图

news/2024/7/5 5:27:48

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

知识点介绍:

  • 爬虫基本思路流程

  • requests模块的使用

  • pandas读取表格数据

环境介绍:

开发环境:

  • python 3.8 运行代码

  • pycharm 2022.3 辅助敲代码

模块使用:

  • requests >>> pip install requests

  • pandas >>> pip install pandas

  • jieba

  • stylecloud

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

采集弹幕代码展示

完整源码、教程 点击此处跳转文末名片获取 ,我都放在这里了。

导入模块

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
    url = f'https://dm.video.qq.com/barrage/segment/r0044k5cbzb/t/v1/{i*30000}/{i*30000+30000}/083002a_1666174141'
  1. 发送请求
    # 函数传参 默认位置传参, 指定参数传参
    response = requests.get(url, headers=headers)
  1. 获取数据 <Response [200]>: 请求成功
    json_data = response.json()
  1. 解析数据 提取数据
    # 字典(可以通过键取值) 和 列表 的取值方式
    # [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)
  1. 保存数据
        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'
)

括展小知识

  1. .text: 只要是文本内容 都可以用.text

  2. .content: 获取二进制数据, 如果当你访问的链接为 图片/视频/音频

  3. .json(): 只支持 {}/[] 取出来之后的数据 要么是字典 要么是列表 要么就是报错

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇


http://lihuaxi.xjx100.cn/news/1165484.html

相关文章

推动解决新能源电车充电不便的难题

安科瑞虞佳豪 新一轮科技革命和产业变革的蓬勃发展&#xff0c;加速了汽车与能源、交通、信息通信等领域的深度融合&#xff0c;汽车产业朝着电动化、智能化、网联化方向前行&#xff0c;新能源汽车产业迎来了前所未有的发展机遇。花生好车紧跟发展潮流和趋势&#xff0c;大力…

目录层次结构中区分不同功能的RPM包,同时只有一份共享的repodata

使用本地的yum源有几个潜在的好处&#xff1a; 更快的下载速度&#xff1a; 本地yum源通常位于本地网络上&#xff0c;因此可以通过局域网快速获取软件包&#xff0c;而不需要依赖互联网连接。这样可以提供更快的下载速度&#xff0c;节省时间和带宽消耗。 离线访问&#xff1…

「实在RPA·电力数字员工」助推电力行业提质增效

一、电力行业数字化转型的重要性: 电力行业作为节能减排的关键&#xff0c;其数字化转型是推动碳达峰、碳中和目标如期实现的重要一环。实现“双碳”目标&#xff0c;能源是主战场&#xff0c;电力是主力军。对此&#xff0c;国家有关部门出台了一系列引导相关产业数字化发展的…

次氯酸消毒剂制备中的全氟醚橡胶密封耐腐蚀电动阀门解决方案

摘要&#xff1a;次氯酸作为是一种新型消毒剂&#xff0c;近年来广泛应用于医疗卫生机构、公共卫生场所和家庭的一般物体表面、医疗器械、医疗废物等。由于次氯酸的酸性和强氧化性&#xff0c;使得次氯酸生产制备过程中会给流量调节阀门带来腐蚀并影响寿命和控制精度&#xff0…

【Netty】Netty ChannelHandler(四)

文章目录 前言一、ChannelHandler二、ChannelInboundHandler三、ChannelOutboundHandler四、ChannelDuplexHandler总结 前言 前两篇文章我们已经对Netty进行了简单的了解和架构设计原理的剖析。 相关文章链接如下&#xff1a; Netty 概述&#xff08;一&#xff09;Netty 架构…

【CMU 15-445】学习笔记与Lab汇总

又来开新坑啦&#xff01;本门课程为CMU的数据库原理课程15-445&#xff0c;我学习的版本为Fall2022&#xff0c;教授为Andy&#xff08;上课有DJ&#xff09;。准备跟着课程的Schedule来做&#xff0c;就是先看配套教材的相应章节&#xff08;Database-System-Concept-7th&…

「API 接口获取方法」

在创建一个应用程序的过程中&#xff0c;获取数据是非常关键的一步。而通过API接口获取数据通常是最好的方式之一。那么&#xff0c;如何通过关键字获取API接口呢&#xff1f;以下是一些步骤&#xff1a; 1.确定你需要获取的数据类型 首先&#xff0c;你需要确定你需要获取的…

HTML+CSS实训——Day03——仿网易云音乐的主页界面

仓库链接:https://github.com/MengFanjun020906/HTML_SX 一些今天需要用到的知识点 弹性盒子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedg…