千家信息网

Python如何实现抖音评论数据抓取

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,小编给大家分享一下Python如何实现抖音评论数据抓取,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. 抓取数据抖音出了 web 版,抓取数据方便了很多。抓评论滑到网页评论区,在浏
千家信息网最后更新 2024年11月22日Python如何实现抖音评论数据抓取

小编给大家分享一下Python如何实现抖音评论数据抓取,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1. 抓取数据

抖音出了 web 版,抓取数据方便了很多。

抓评论

滑到网页评论区,在浏览器网络请求里过滤包含comment的请求,不断刷新评论就可以看到评论的接口。

有了接口,就可以写 Python 程序模拟请求,获取评论数据。

请求数据要设置一定间隔,避免过大请求,影响别人服务

抓取评论数据有两点需要注意:

  • 有时候接口可能返回空数据,因此需要多试几次,一般过了人工滑动验证后的接口基本可用

  • 不同页面之间的数据可能会重复,所以需要跳页请求

2. EDA

11.17 号的视频有 12w 条评论,我只抓取了 1w 多条。

text列是评论。

先对数据做一些探索性的分析,之前介绍过几个EDA工具,可以自动产出基础的数据统计和图表。

这次我用的是ProfileReport

# edaprofile = ProfileReport(df, title='张同学抖音评论数据', explorative=True)profile

评论时间分布

从评论的时间分布来看,由于发布的视频的时间是17号,所有17、18号评论发布量比较多。不过再往后甚至到了 12.9 号,仍然有不少新评论产生,说明视频热度确实很高。

评论的长度分布

大多数评论的字数在 20 以内,基本不超过 40 个字,说明都是短文本。

评论者身份

参与评论的人里, 99.8% 是没有认证身份的,说明评论用户里基本都是普通用户。

3. LDA

上面的统计数据还是太粗略了。但我们要想知道大家的感兴趣点在哪,又不可能细到把 1.2w 条评论全部看完。

所以需要对这些评论先做一次归类,相当于把数据升维,抽象。因为只有将数据升维,了解每个维度的含义和占比,才能帮助我们从全局角度掌握数据。

这里我用LDA算法对文本聚类,聚合在一起的评论可以看做属于同一个主题。

LDA算法的核心思想有两点:

  • 具有一定相似性的文本会聚合在一起,形成一个主题。每个主题包含生成该主题需要的词,以及这些词的概率分布。以此可以人为推断出主题的类别。

  • 每篇文章会它有在所有主题下的概率分布,以此可以推断出文章属于哪个主题。

比如,经过LDA算法聚类后,某个主题中,战争、军费这类词出现概率很高,那么我们可以将该主题归类为军事。如果有一篇文章属于军事主题的概率很高,我们就可以将该文章分为军事一类。

简单介绍完LDA的理论,下面我们来实战一下。

3.1 分词、去停用词

# 分词emoji = {'可怜', '发呆', '晕', '灵机一动', '击掌', '送心', '泣不成声', '哈欠', '舔屏', '偷笑', '愉快', '再见', '666', '熊吉', '尬笑', '吐舌', '撇嘴', '看', '绿帽子', '捂脸', '呆无辜', '强壮', '震惊', '阴险', '绝', '给力', '打脸', '咖啡', '衰', '一起加油', '酷拽', '流泪', '黑脸', '爱心', '笑哭', '机智', '困', '微笑袋鼠', '强', '闭嘴', '来看我', '色', '憨笑', '不失礼貌的微笑', '红脸', '抠鼻', '调皮', '紫薇别走', '赞', '比心', '悠闲', '玫瑰', '抱拳', '小鼓掌', '握手', '奸笑', '害羞', '快哭了', '嘘', '惊讶', '猪头', '吐', '暗中观察', '不看', '啤酒', '呲牙', '发怒', '绝望的凝视', '大笑', '吐血', '坏笑', '凝视', '可爱', '拥抱', '擦汗', '鼓掌', '胜利', '感谢', '思考', '微笑', '疑问', '我想静静', '灵光一闪', '白眼', '泪奔', '耶'}stopwords = [line.strip() for line in open('stop_words.txt', encoding='UTF-8').readlines()]def fen_ci(x):    res = []    for x in jieba.cut(x):        if x in stopwords or x in emoji or x in ['[', ']']:            continue        res.append(x)    return ' '.join(res)df['text_wd'] = df['text'].apply(fen_ci)

由于评论中有许多 emoji 表情, 我抽取了所以 emoji 表情对应的文本,生成 emoji 数组,用于过滤表情词。

3.2 调用LDA

from sklearn.feature_extraction.text import CountVectorizerfrom sklearn.decomposition import LatentDirichletAllocationimport numpy as npdef run_lda(corpus, k):    cntvec = CountVectorizer(min_df=2, token_pattern='\w+')    cnttf = cntvec.fit_transform(corpus)        lda = LatentDirichletAllocation(n_components=k)    docres = lda.fit_transform(cnttf)        return cntvec, cnttf, docres, lda    cntvec, cnttf, docres, lda = run_lda(df['text_wd'].values, 8)

经过多次试验,将数据分成 8 类效果较好。

选取每个主题下出现概率 top20 的词:

主题的词分布

从这些词概率分布,归纳各主题的类别,主题0 ~ 主题7分别是:居然看完、知道钥匙在哪、农村生活、喂狗、拍摄手法、还用锁门?、鸡蛋放盐多、袜子放枕头下。

统计主题占比:

主题占比

红色的是主题3(喂狗),占比最大,很多人评论是:以为要做给自己吃,没想到是喂狗的。我看的时候也是这样认为的。

其他各主题占比比较均匀。

经过主题分类后,我们可以发现,张同学不仅仅是农村生活引起了大家的关注,更多的是视频中大量反常态的镜头。

最后,用树状图展示各主题及对应的具体评论。

看完了这篇文章,相信你对"Python如何实现抖音评论数据抓取"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

评论 主题 数据 概率 接口 篇文章 视频 军事 文本 时间 算法 表情 微笑 统计 农村 同学 更多 用户 类别 身份 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 黑海网络技术处是真的吗 管家婆辉煌版怎么设置服务器 手机查看网络安全 崇明区新能源软件开发推荐厂家 物理文献搜索数据库 中信期货ctp交易服务器 杭州富之赢软件开发有限公司 光环无限哪个服务器人多 数据库系统安全性分析图片 多媒体技术与网络技术结合 服务器需要的红石科技 网络安全风险2022 花猫网络技术有限公司 软件开发BSE成长经验 山东软件开发有几个 互联网金融与金融科技一样吗 网络安全去甲方和乙方 六安工程管理软件开发多少钱 互联网与软件开发行业的区别 爱康科技互联网汽车 霸州数据库恢复 mysql样例数据库 啊里通打电话为什么服务器拒绝 数据库运算 除法 如何多个手机访问一个数据库 浦发银行软件开发岗面试 网络安全工程师的工作方向是什么 数据库表的外关键字 戴尔服务器电池怎么更换 河南城建学院服务器名称ip地址
0