Python 抖音评论数据抓取分析

张同学 10.4号开始发视频,视频的点赞量一直很高,11.17 号的视频达到了顶峰,收获 250w 个赞,之后关注量也开启了暴涨。

所以挖掘 11.17 号视频的评论,更有助于我们达成目的。另外,为方便大家更好的学习爬虫技术和数据可视化分析,完整版代码我放在文末。

1. 抓取数据

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

抓评论

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

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

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

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

  • 有时候接口可能返回空数据,因此需要多试几次,一般过了人工滑动验证后的接口基本可用
  • 不同页面之间的数据可能会重复,所以需要跳页请求

2. EDA

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

text列是评论。

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

这次我用的是ProfileReport

# eda
profile = 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 CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
import numpy as np

def 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(喂狗),占比最大,很多人评论是:以为要做给自己吃,没想到是喂狗的。我看的时候也是这样认为的。

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

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

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

核心代码已经贴在文章里,完整代码如下方式领取。

代码

链接:https://pan.baidu.com/s/1FnIgkW2b_uVtQq1Z-i8PJA
提取码:1234

(0)

相关推荐

  • python 爬取腾讯视频评论的实现步骤

    一.网址分析 查阅了网上的大部分资料,大概都是通过抓包获取.但是抓包有点麻烦,尝试了F12,也可以获取到评论.以电视剧<在一起>为例子.评论最底端有个查看更多评论猜测过去应该是 Ajax 的异步加载. 网上的大部分都是构建评论的网址,通过 requests 获取,正则表达式进行数据处理.本文也利用该方法进行数据处理,其实利用 scrapy 会更简单. 根据前辈给出的经验,顺利找到了评论所在的链接. 在新标签中打开,该网址的链接. 评论都在"content":"xx

  • 基于Python实现评论区抽奖功能详解

    目录 1. 分析评论接口 2. 获取评论数据 3. 筛选评论用户 4. 抽取幸运观众 5. 完整源码 5.1 字符串截取的方式 5.2 正则匹配方式 5.3 执行结果 1. 分析评论接口 首先,我们需要找到评论数据的「接口」,也就是网站获取评论数据的请求. 打开一个需要抽奖的文章,进入「开发者模式」(按F12 或 右键检查),选中 Network 选项,同时「刷新」文章页面,使其重新发送请求,在右侧工具栏中观察页面发送的请求,逐个分析请求,根据响应内容判断出获取评论的请求 在 Headers 栏

  • python 爬取华为应用市场评论

    代码分享 整个项目我放在了github上,在python3.7下可以正常使用,如果有什么问题欢迎大家指正. github项目地址:https://github.com/LSY-C/scrapy_hauweiappstore_comment 分别爬取的一些应用信息以及应用的评论信息,数据结构如下: 一.安装并创建Scrapy项目 Scrapy官方文档:https://docs.scrapy.org/en/latest/intro/install.html Scrapy是一个比较好用的python爬

  • 利用Python网络爬虫爬取各大音乐评论的代码

    python爬虫--爬取网易云音乐评论 方1:使用selenium模块,简单粗暴.但是虽然方便但是缺点也是很明显,运行慢等等等. 方2:常规思路:直接去请求服务器 1.简易看出评论是动态加载的,一定是ajax方式. 2.通过网络抓包,可以找出评论请求的的URL 得到请求的URL 3.去查看post请求所上传的数据 显然是经过加密的,现在就需要按着网易的思路去解读加密过程,然后进行模拟加密. 4.首先去查看请求是经过那些js到达服务器的 5.设置断点:依次对所发送的内容进行观察,找到评论对应的UR

  • python 爬取京东指定商品评论并进行情感分析

    项目地址 https://github.com/DA1YAYUAN/JD-comments-sentiment-analysis 爬取京东商城中指定商品下的用户评论,对数据预处理后基于SnowNLP的sentiment模块对文本进行情感分析. 运行环境 Mac OS X Python3.7 requirements.txt Pycharm 运行方法 数据爬取(jd.comment.py) 启动jd_comment.py,建议修改jd_comment.py中变量user-agent为自己浏览器用户

  • python爬取晋江文学城小说评论(情绪分析)

    1. 收集数据 1.1 爬取晋江文学城收藏排行榜前50页的小说信息 获取收藏榜前50页的小说列表,第一页网址为 'http://www.jjwxc.net/bookbase.php?fw0=0&fbsj=0&ycx0=0&xx2=2&mainview0=0&sd0=0&lx0=0&fg0=0&sortType=0&isfinish=0&collectiontypes=ors&searchkeywords=&pa

  • 用Python写脚本自动评论再也不怕碰到喷子

    自从上次在B站看到一个喷子,一个人喷一堆人,当时我就看不过去了,直接用Python写了个自动评论软件,他说一句我能说十句,当场教育喷子~ 于是乎,顺便整理一下,做了一手教程,分享给大家,当然不是教大家去做喷子,只是学学这么个技术~ 不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以加这个群点我免费领取资料 包括今天的代码,过几天我还会做个视频教程出来,有需要也可以领取~ 给大家准备的学习资料包括但不限于: Python

  • python爬取豆瓣评论制作词云代码

    目录 一.爬取豆瓣热评 二.制作词云 总结 一.爬取豆瓣热评 该程序进行爬取豆瓣热评,将爬取的评论(json文件)保存到与该python文件同一级目录下注意需要下载这几个库:requests.lxml.json.time import requests from lxml import etree import json import time class Spider(object): def __init__(self): #seif.ure='https://movie.douban.co

  • Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携程,然后在携程里面任意搜索一个景点:长隆野生动物世界,这里就以长隆野生动物世界为例,讲解如何去爬取携程评论数据. 页面下方则是评论数据   从上面两张图可以看出,点击评论下一页,浏览器的链接没有变化,说明数据是Ajax异步请求.因此我们就找到了数据是异步加载过来的,这时候需要去network里面是查

  • Python 抖音评论数据抓取分析

    张同学 10.4号开始发视频,视频的点赞量一直很高,11.17 号的视频达到了顶峰,收获 250w 个赞,之后关注量也开启了暴涨. 所以挖掘 11.17 号视频的评论,更有助于我们达成目的.另外,为方便大家更好的学习爬虫技术和数据可视化分析,完整版代码我放在文末. 1. 抓取数据 抖音出了 web 版,抓取数据方便了很多. 抓评论 滑到网页评论区,在浏览器网络请求里过滤包含comment的请求,不断刷新评论就可以看到评论的接口. 有了接口,就可以写 Python 程序模拟请求,获取评论数据. 请

  • python实现模拟器爬取抖音评论数据的示例代码

    目标: 由于之前和朋友聊到抖音评论的爬虫,demo做出来之后一直没整理,最近时间充裕后,在这里做个笔记. 提示:大体思路 通过fiddle + app模拟器进行抖音抓包,使用python进行数据整理 安装需要的工具: python3 下载 fiddle 安装及配置 手机模拟器下载 抖音部分: 模拟器下载好之后, 打开模拟器 在应用市场下载抖音 对抖音进行fiddle配置,配置成功后就可以当手机一样使用了 一.工具配置及抓包: 我们随便打开一个视频之后,fiddle就会刷新新的数据包 在json中

  • python数据抓取分析的示例代码(python + mongodb)

    本文介绍了Python数据抓取分析,分享给大家,具体如下: 编程模块:requests,lxml,pymongo,time,BeautifulSoup 首先获取所有产品的分类网址: def step(): try: headers = { ..... } r = requests.get(url,headers,timeout=30) html = r.content soup = BeautifulSoup(html,"lxml") url = soup.find_all(正则表达式

  • Python+Tkinter制作股票数据抓取小程序

    目录 程序布局 抓取与保存功能 添加功能 个股查询按钮 批量查询开关 在前面的文章中,我们一起学习了如何通过 Python 抓取东方财富网的实时股票数据,链接如下 用 Python 爬取股票实时数据 今天我们就在这个基础上,实现一个 Tkinter GUI 程序,完成无代码股票抓取! 首先对于 Tkinter 相信大家都是比较了解的,如果有小伙伴对于 Tkinter 的相关用法不是特别熟悉的话,可以看如下文章 Tkinter 入门之旅 首先我们先看一下 GUI 程序的最终效果 该程序共分三个区域

  • 浅谈Python爬虫原理与数据抓取

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为通用爬虫和聚焦爬虫两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 通用搜索引擎(Search Engine)工作原理 通用网络爬虫从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果. 第一步:抓取网页

  • python+mongodb数据抓取详细介绍

    分享点干货!!! Python数据抓取分析 编程模块:requests,lxml,pymongo,time,BeautifulSoup 首先获取所有产品的分类网址: def step(): try: headers = { ..... } r = requests.get(url,headers,timeout=30) html = r.content soup = BeautifulSoup(html,"lxml") url = soup.find_all(正则表达式) for i

  • Python数据抓取爬虫代理防封IP方法

    爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息,一般来说,Python爬虫程序很多时候都要使用(飞猪IP)代理的IP地址来爬取程序,但是默认的urlopen是无法使用代理的IP的,我就来分享一下Python爬虫怎样使用代理IP的经验.(推荐飞猪代理IP注册可免费使用,浏览器搜索可找到) 1.划重点,小编我用的是Python3哦,所以要导入urllib的request,然后我们调用ProxyHandler,它可以接收代理IP的参数.代理可以根据自己需要选择,当然免费的也是有

  • python数据抓取3种方法总结

    三种数据抓取的方法 正则表达式(re库) BeautifulSoup(bs4) lxml *利用之前构建的下载网页函数,获取目标网页的html,我们以https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/为例,获取html. from get_html import download url = 'https://guojiadiqu.bmcx.com/AFG__guojiayudiqu/' page_content = download(url) *假设我

  • Python实现微信好友数据爬取及分析

    前言 随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色. 今天这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别.头像.签名.位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法.常言道:工欲善其事,必先利其器也.在正式开始这篇文章前,简单介绍下本文中使用到的第三方模块: itchat:微

  • Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容

    1.引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor.本文记录了确定gsExtractor的技术路线过程中所做的编程实验.这是第二部分,第一部分实验了用xslt方式一次性提取静态网页内容并转换成xml格式.留下了一个问题:javascript管理的动态内容怎样提取?那么本文就回答这个问题. 2.提取动态内容的技术部件 在上一篇python使用xslt提取网页数据中,要提取的内容是直接从网页的source code里拿到的.但是一些Aja

随机推荐