【爬虫实战】全过程详细讲解如何使用python获取抖音评论,包括二级评论

简介:

前两天,TaoTao发布了一篇关于“获取抖音评论”的文章。但是之前的那一篇包涵的代码呢仅仅只能获取一级评论。虽然说抖音的一级评论挺精彩的了,但是其实二级评论更加有意思,同时二级评论的数量是很多。所以二级评论是非常值得我们关注的。因此TaoTao花了一些时间写了一下这块的代码。接下来就让TaoTao带着大家来看一下整个过程是怎样的吧!
视频讲解如下:

【爬虫实战】全过程详细讲解如何使用python获取抖音评论,包括二级评论

环境:

代码执行环境如下:
Vscode
Windows10
Anaconda
request
csv
fake_useragent

需要执行代码的同学,按照上面的环境检查自己的环境。如果不满足的话,安装一下即可。安装方法,也很简单,pip安装指定的库。如果因为网络的原因没有办法安装,使用清华镜像站进行安装即可。
安装命令如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fake_useragent

代码执行:

首先需要登录到抖音,注意这里是需要登录的哦,不然获取不到cookie值。
然后点击评论区,之后我们再按F12,接着再将评论区往下拉。看到list/?/device_platform
这个文件,就可以了。然后点击Preview中的任何一个comments。可以看到这里就有aweme_id的字段,然后给这个复制下来。
在这里插入图片描述
复制下来以后,就可以给这个数据粘贴到代码中的aweme_id了,具体如下:
在这里插入图片描述
同样的方法,还需要给cookie的值替换成自己的。
Cookie值获取的方式,依然是在list/?/device_platform文件中找,但是它是在Headers中,具体的如下图所示:
在这里插入图片描述
获取到了这个值以后呢,需要给这个cookie的替换到代码中,具体替换位置如下所示:
在这里插入图片描述
完成了上述的操作以后,就可以Run代码了。还是需要提一嘴,Run代码的方式大体上就两种,一种是在idea中如:pycharm中直接点击Run键;另外一种就是我下面的方式,直接在命令行中使用命令的方式执行。执行命令:python douyinSecondComments.py
执行过程如下所示:
在这里插入图片描述
最终的数据如下所示:
主要包括:‘页码’, ‘评论id’, ‘评论发布时间’,‘评论点赞数’,‘评论发布ip’, ‘评论内容’,‘评论用户名’,‘用户主页链接’,‘用户抖音号’
详细如下所示:
主评论:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
子评论:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码讲解:

我们可以看到,终端命令行中的输出信息有很多,具体上可以分为两类:一类是评论信息,这里的话主要就是:主评论还有子评论了。另一类就是一些相关信息的输出,主要是:浏览器的模拟,还有就是休眠。至于为什么要模拟浏览器以及设置主、子评论的休眠,主要是为了防止被反爬。
然后代码设置的话,如下所示:

user_agent = UserAgent()  random.seed()  headers['user-agent'] = user_agent.random  response = requests.get(url, params=params, headers=headers, proxies=proxies)
  
print(headers['user-agent'])  sleep_time = random.uniform(0, 5)  print("sleep time:", sleep_time)  print("爬取评论数量:", comments_count)  print("======================")  time.sleep(sleep_time)

同时,我们从抖音请求到的数据时间,是一个时间戳,所以我这里又写了一个将时间戳转换成普通时间的代码,具体如下所示:

def timestampToNormalTime(timestamp):
    return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp))

然后就是数据的持久化保存了。持久化的方式有很多:比如数据库、文件保存等等。我这里采用的就是直接保存在csv中。因为这样的话,在后续的数据可视化使用是非常方便的。
使用csv保存呢,主要分为两步,一步是进行csv文件的创建,另一个就是对csv文件的数据追加。具体的代码如下所示:

with open("douyinComments.csv", mode="a", newline='', encoding="utf-8-sig") as f:
    csv_write = csv.writer(f)
    csv_write.writerow(['页码', '评论id', '评论发布时间','评论点赞数','评论发布ip', '评论内容','评论用户名','用户主页链接','用户抖音号'])

with open("douyinSecondComments.csv", mode="a", newline='', encoding="utf-8-sig") as f:
    csv_write = csv.writer(f)
    csv_write.writerow(['页码', '评论id', '评论发布时间','评论点赞数','评论发布ip', '评论内容','评论用户名','用户主页链接','用户抖音号'])

with open("douyinComments.csv", mode="a", newline='', encoding="utf-8-sig") as f:
    csv_write = csv.writer(f)
    csv_write.writerow([page, cid, create_time, digg_count, ip_label, text, nickname, sec_uid, unique_id])

with open("douyinSecondComments.csv", mode="a", newline='', encoding="utf-8-sig") as f:
            csv_write = csv.writer(f)
            csv_write.writerow([sub_page,cid,create_time,digg_count,ip_label,text,nickname,sec_uid,unique_id])

更加详细的讲解请看上面的视频!
源码链接:【爬虫实战】全过程详细讲解如何使用python获取抖音评论,包括二级评论
由于笔者能力有限,在某些表述方面难免有些不准确,还请多多包涵!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371301.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

适合大型企业的云计算服务器有哪些?

随着云计算技术的不断发展,越来越多的企业开始采用云计算服务来降低成本、提高效率。对于大型企业而言,选择适合的云计算服务器非常重要,因为它将直接影响企业的业务运营和数据安全。本文将介绍适合大型企业的云计算服务器类型,以…

DolphinScheduler实现隔几天调度

1.场景分析 dolphinscheduler(海豚)定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时,跨月,每次跨月等都会从每个月的第1天(第几天开始可以设定)开始重新计时…

java设计模式:观察者模式

在平常的开发工作中,经常会使用到设计模式。合理的使用设计模式,可以提高开发效率、提高代码质量、提高代码的可拓展性和维护性。今天来聊聊观察者模式。 观察者模式是一种行为型设计模式,用于对象之间一对多的依赖关系,当被观察对…

【学习笔记】树上差分总结(点差分/边差分)

一.树上差分的基本概念 1.树上差分的定义 树上差分,顾名思义,意思就是在树上做差分。 至于什么是差分呢?如果不会的同学,可以先看看我的这篇博客:一维,二维差分の详解(简单易懂)_一维差分-CSDN博客 2.树…

Linux---信号

前言 到饭点了,我点了一份外卖,然后又开了一把网游,这个时候,我在打游戏的过程中,我始终记得外卖小哥会随时给我打电话,通知我我去取外卖,这个时候游戏还没有结束。我在打游戏的过程中需要把外…

CSS写渐变边框线条

box-sizing: border-box; border-top: 1px solid; border-image: linear-gradient(to right, red, blue) 1;

【Java八股文面试系列】JVM-内存区域

目录 Java内存区域 运行时数据区域 线程独享区域 程序计数器 Java 虚拟机栈 StackFlowError&OOM 本地方法栈 线程共享区域 堆 GCR-分代回收算法 字符串常量池 方法区 运行时常量池 HotSpot 虚拟机对象探秘 对象的创建 对象的内存布局 句柄 Java内存区域 运…

如果通过浏览器调试?

背景:博主是一个有丰富经验的后端开发人员,在前端开发中感觉总是有种力不从心的感觉,因为没有后端debug调试的清晰感。 解决办法:掌握chorm浏览器调试技巧。 F12, F5 打上断点之后,这不就是梦寐之中的调试…

Jenkins升级后,构建任务配置界面重复错位

最近我把公司的Jenkins服务升级到了最新版本,升级完成后,点了一下构建任务,发现能够构建成功,就以为顺利完成升级了,下班走了,结果第二天,进入构建任务配置界面发现,界面一团乱麻&am…

LeetCode 133:克隆图(图的深度优先遍历DFS和广度优先遍历BFS)

回顾 图的Node数据结构 图的数据结构&#xff0c;以下两种都可以&#xff0c;dfs和bfs的板子是不变的。 class Node {public int val;public List<Node> neighbors;public Node() {val 0;neighbors new ArrayList<Node>();}public Node(int _val) {val _val;…

基于springboot地方美食分享网站源码和论文

基于springboot地方美食分享网站源码和论文361 首先&#xff0c;论文一开始便是清楚的论述了系统的研究内容。其次&#xff0c;剖析系统需求分析&#xff0c;弄明白“做什么”&#xff0c;分析包括业务分析和业务流程的分析以及用例分析&#xff0c;更进一步明确系统的需求。然…

基于微信小程序的书籍阅读系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

STM32F407移植OpenHarmony笔记9

继上一篇笔记&#xff0c;已经完成liteos内核的基本功能适配。 今天尝试启动OHOS和XTS兼容性测试。 如何启动OHOS&#xff1f; OHOS系统初始化接口是OHOS_SystemInit(void)&#xff0c;在内核初始化完成后&#xff0c;就能调用。 extern void OHOS_SystemInit(void); OHOS_Sys…

【数据分享】1929-2023年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐年平均气温数据、逐年最高气温数据…

「优选算法刷题」:计算布尔二叉树的值

一、题目 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其中 0 表示 False &#xff0c;1 表示 True 。非叶子节点 要么值为 2 要么值为 3 &#xff0c;其中 2 表示逻辑或 OR &#xff0c;3 表示逻辑与 AND…

1.0 Hadoop 教程

Hadoop 是一个开源的分布式计算和存储框架&#xff0c;由 Apache 基金会开发和维护。 Hadoop 为庞大的计算机集群提供可靠的、可伸缩的应用层计算和存储支持&#xff0c;它允许使用简单的编程模型跨计算机群集分布式处理大型数据集&#xff0c;并且支持在单台计算机到几千台计…

HBase相关面试准备问题

为什么选择HBase 1、海量存储 Hbase适合存储PB级别的海量数据&#xff0c;在PB级别的数&#xff0c;能在几十到几百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性&#xff0c;才为海量数据的存储提供了便利。 2、列式存储 这里的列式存储其实说的…

【Android】RxJava系列01-基本概述和基本用法

少年啊&#xff0c;要永远相信美好的事情即将发生 【Android】RxJava系列01-基本概述和基本用法 1.RxJava的概述2.RxJava的作用3.观察者和被观察者4.背压5.RxJava的基本用法步骤一&#xff0c;创建Observer&#xff08;观察者&#xff09;步骤二&#xff0c;创建Observable&…

LangChain 最近发布的一个重要功能:LangGraph

LangGraph 是 LangChain 最近发布的一个重要功能&#xff0c;LangChain 进入多代理框架领域。通过建立在LangChain 之上&#xff0c;LangGraph 使开发人员可以轻松创建强大的代理运行时。 LangChain 使用其表达语言&#xff08;LCEL&#xff09;为开发人员构建定制链提供技术支…

深度学习(7)---Diffusion Model概念讲解

文章目录 一、基本概括1.1 概念讲解1.2 Denoise模块 二、Stable Diffusion2.1 概念讲解2.2 FID2.3 CLIP 一、基本概括 1.1 概念讲解 1. Diffusion Model是一种生成模型&#xff0c;通过连续添加高斯噪声来破坏训练数据&#xff0c;然后学习反转的去噪过程来恢复数据。它分为正…