#看完前两篇可能不少小伙伴就有疑问了,为什么喔的循环都写冒烟了,三万的评论还是只能搞到三千条,其他的是被帖主吃掉了吗?其实不然,别忘了,评论之下还有回复,多的时候可是能达到成千上万条的。
一、二级评论的接口
经过苦苦寻找,找到抖音获得二级评论的接口就是https://www.douyin.com/aweme/v1/web/comment/list/reply/?device_platform=webapphttps://www.douyin.com/aweme/v1/web/comment/list/reply/?device_platform=webapp接下来又到了分析请求参数的时候了,不难发现其实就是比一级评论多了一个参数,comment_id
根据变量名也很容易就能够得出这个参数的意义,就是一级评论的评论ID,也就是上一篇结尾留的小悬念。仿制第一篇的方法,很容易就能够得到返回的二级评论。
二、数据处理与程序结构
(一)对于返回数据的处理可以参照上一篇的方法,只是说二级评论和一级评论在数据的结构上可能存在一些差异,建议把数据处理的逻辑呢要分开。提示,具体的二级评论的数量就是comment_reply_total属性
(二)介绍到这里,我们就可以获得一个视频的所有评论了。
1.到这里,有同学要问了会什么他的程序跑了一会儿会报错,就是在会结果进行数据处理提取的地方。其实很简单就是评论已经没了,服务器返回的数据中不存在你指定处理的数据格式,所以处理会出现报错。
这是坏事吗?不都是!因为是因为请求完所有评论才会报这个错,所以我们就可以根据这个特点,控制对每一个视频的一级评论以及二级评论做出控制,什么时候该退出——报错了——没了。我们可以使用
try:
# 放置数据处理的或者是请求加处理
except:
# 跳出当前循环
这样的话我们就不用通过计数手段和返回的总评论数去设计跳出循环请求机制
2.还有就是可能部分同学会感觉数据有亿丢丢凌乱,在这里我提供一个我自己的思路。
首先我们把依次请求得到一级评论,在解析出数据后,根据评论ID去得到每一条评论下的回复(假如有,try一下就可以),然后把得到二级评论封装在列表中,返回所有的结果,加上第一级评论的信息在封装为一个列表,最后所有的评论信息再封装为一个列表。
可能会有更好的方法,该方法也不是内存最优,但是能在一定程度上适合新手同学,而且数据完整性比较好!
然后我们可以对得到的数据插入到excel表中,就实现了数据的整理和保存。
这是一个简单的使用excel的例子
def main(total_list, aweme_id):
import openpyxl
workbook = openpyxl.Workbook()
# 选择默认的活动工作表
worksheet = workbook.active
worksheet["A1"] = "用户名"
worksheet["B1"] = "ip属地"
worksheet["C1"] = "个性签名"
worksheet["D1"] = "评论"
worksheet["E1"] = "评论时间"
worksheet["F1"] = "个人主页网址"
count = 2
for per_lists in total_list:
first_comment = per_lists[0]
worksheet[f"A{count}"] = first_comment[0]
worksheet[f"B{count}"] = first_comment[1]
worksheet[f"C{count}"] = first_comment[2]
worksheet[f"D{count}"] = first_comment[3]
worksheet[f"E{count}"] = first_comment[4]
worksheet[f"F{count}"] = first_comment[5]
count += 1
try:
second_comment = per_lists[1]
worksheet[f"A{count}"] = "该评论下的回复"
count += 1
for per in second_comment:
worksheet[f"A{count}"] = per[0]
worksheet[f"B{count}"] = per[1]
worksheet[f"C{count}"] = per[2]
worksheet[f"D{count}"] = per[3]
worksheet[f"E{count}"] = per[4]
worksheet[f"F{count}"] = per[5]
count += 1
count += 1
except:
pass
workbook.save(f"{aweme_id}.xlsx")
至此,分享就结束了!欢迎大家留言提出问题以及不足!感谢!