前提,上次我用selenium写了一个抖音直播评论获取,这次烂活新整,用python发送post请求获取快手的视频评论!

1.首先打开网页版的快手

在网页里面按下F12,打开开发者模式,点击网络,查看Fetch/XHR。看看里面的请求。

找到一个叫graphql的请求。这个就是评论的请求。我们点击进去,然后查看预览。可以看到如下效果。

返回的是一个json数据,这下就好办了。我们现在只要模仿浏览器给快手服务器发送请求就行了。

2.发送请求给快手服务器

首先,我们来看一下这个是个什么请求,是个get请求还是post请求。(一般都是post)点击表头。查看请求。

我们可以看到,这是个post请求,请求url是https://www.kuaishou.com/graphql,发送post请求都是要带一些表单数据的。

看看表单数据要传输哪些数据

可以看到这个请求负载里的数据就是我们要传输的数据了,这个请求负载不同于Form data的。Form data传输的一个字典,而 Request Payload是一个json数据。这个有所不同,如果你此时还是传入一个dict数据的话,是不会返回数据的。必须传入json数据。那么我现在就可以用python发送请求了。做到这里一切都很顺利!!

3.用python发送请求

import requests
import json
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31','Cookie': 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_1e83306028e4691a0acb7f78ecfbf145; didv=1632459485000; client_key=65890b29; Hm_lvt_86a27b7db2c5c0ae37fee4a8a35033ee=1632459683; userId=153866369; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABSkrOjzdufZa4lBYXxddWpU-Da_CebI6GVHm2vvSBBxRUv9kJ_BKaJ3weX3FWf3acdLw2yy6uCM1MpHB8Pfi7EnJBlcRb0GqyXYMpPlaCdMqKlVo0PI-iY9zN0wdxA89wOXtml-fWR7CFTT54hsd3PZTsTwlWBA7vhJvwim07-A1RaTmwi66PbBkj7eCrkmJX0hdCln9MiFVyA_CL44TScBoSuDcrlwmr6APhXfdZrBO5uo0FIiA8xE-BzwPs3Wp_Q9mI4y5GcZxo1E-B0xr4CkR4zohqJigFMAE; kuaishou.server.web_ph=eeb2272fa742f8d8f79bd635c3e8044ac1f8'}
data = {"operationName": "commentListQuery","variables": {"photoId": "3xhcrvum26yz3vg","pcursor": ''},"query": "query commentListQuery($photoId: String, $pcursor: String) {\n visionCommentList(photoId: $photoId, pcursor: $pcursor) {\n   commentCount\n   pcursor\n   rootComments {\n     commentId\n     authorId\n     authorName\n     content\n     headurl\n     timestamp\n     likedCount\n     realLikedCount\n     liked\n     status\n     subCommentCount\n     subCommentsPcursor\n     subComments {\n       commentId\n       authorId\n       authorName\n       content\n       headurl\n       timestamp\n       likedCount\n       realLikedCount\n       liked\n       status\n       replyToUserName\n       replyTo\n       __typename\n     }\n     __typename\n   }\n   __typename\n }\n}\n"
}
conment = requests.post('https://www.kuaishou.com/graphql', headers=headers, json=data)
conments = json.loads(conment.text)
print(conments)

此时,就一个成功返回json数据了。

但是,好像有个问题,只有28条,返回数据不全what,fuck!,看来是遇到问题了。

没关系,我又重新运行了几次,还是不行。我又回到快手页面。又打开开发者模式。开始找问题。突然我发现,有好多个叫graphql的请求。此时,我就猜想,是不是这个是动态加载的,你将评论往下滑,它才会加载。取好几个graphql的请求数据进行对比,发现只有photoId和pcursor其中的数据不同。经过我的仔细查找发现,这个photoId就是这个视频的id,那个网页地址上都有。不同的视频photold才不同。行了,photold解决了,那pucursor呢,这个是个什么鬼?我看了几个graphql的传输的数据,除了第一个graphql的pucursor是空的。其他的都全是数字。然后我打印了那返回不全的json的数据。发现了一个惊人的秘密。pucursor里面数据是上一个graphql返回的数据里面最后一个人的id。解密了!!!,他是动态渲染的,pucursor接收上一个发评论的人的id来发送下一个请求,从而请求数据。

4.最后来请求完整数据

先写好主程序,最后来个递归就解决一切,评论顺利到手!!!

import requests
import json
import sys
lists = []
def text(w):ww =0list = []headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31','Cookie': 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_1e83306028e4691a0acb7f78ecfbf145; didv=1632459485000; client_key=65890b29; Hm_lvt_86a27b7db2c5c0ae37fee4a8a35033ee=1632459683; userId=153866369; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABSkrOjzdufZa4lBYXxddWpU-Da_CebI6GVHm2vvSBBxRUv9kJ_BKaJ3weX3FWf3acdLw2yy6uCM1MpHB8Pfi7EnJBlcRb0GqyXYMpPlaCdMqKlVo0PI-iY9zN0wdxA89wOXtml-fWR7CFTT54hsd3PZTsTwlWBA7vhJvwim07-A1RaTmwi66PbBkj7eCrkmJX0hdCln9MiFVyA_CL44TScBoSuDcrlwmr6APhXfdZrBO5uo0FIiA8xE-BzwPs3Wp_Q9mI4y5GcZxo1E-B0xr4CkR4zohqJigFMAE; kuaishou.server.web_ph=eeb2272fa742f8d8f79bd635c3e8044ac1f8'}data = {"operationName": "commentListQuery","variables": {"photoId": "3xhcrvum26yz3vg","pcursor": str(w)},"query": "query commentListQuery($photoId: String, $pcursor: String) {\n visionCommentList(photoId: $photoId, pcursor: $pcursor) {\n   commentCount\n   pcursor\n   rootComments {\n     commentId\n     authorId\n     authorName\n     content\n     headurl\n     timestamp\n     likedCount\n     realLikedCount\n     liked\n     status\n     subCommentCount\n     subCommentsPcursor\n     subComments {\n       commentId\n       authorId\n       authorName\n       content\n       headurl\n       timestamp\n       likedCount\n       realLikedCount\n       liked\n       status\n       replyToUserName\n       replyTo\n       __typename\n     }\n     __typename\n   }\n   __typename\n }\n}\n"
}conment = requests.post('https://www.kuaishou.com/graphql', headers=headers, json=data)conments = json.loads(conment.text)#print(conments['data'])s = len(conments['data']['visionCommentList']['rootComments']) - 1#print(conments['data']['visionCommentList']['rootComments'][s]['commentId'])for ii in range(0,s):#print(len(conments['data']['visionCommentList']['rootComments']))#print(conments['data']['visionCommentList']['rootComments'][s])print(conments['data']['visionCommentList']['rootComments'][ii]['content'])www = conments['data']['visionCommentList']['rootComments'][ii]['content']w = conments['data']['visionCommentList']['rootComments'][ii]['commentId']if len(lists)!=-1 :lists.append(www)print('111111')if len(lists)!=1:a = lists[-2]if lists[-1] == a and len(lists) != 1:print("评论已经爬完")sys.exit()for a in range(0,len(list)):ww +=list[a]print(ww)return w
w = ''
while w!=1:w = text(w)

兄弟们,今天就到这里了,剩余就靠你们自己发挥了,(偷偷告诉你们哦,这个不止可以对快手哦,好多网站都可以这样)。但是还是遵守法律法规。下次教兄弟们怎么用python群发消息,也是post请求哦!

用python爬取快手评论(烂活新整)相关推荐

  1. python爬取快手评论信息+快手号

    python爬取快手评论信息+快手号 潦草记录一下思路 从浏览器进行抓包,分析提交参数, 1.从手机中打开快手,找到需要爬取的视频,转发复制链接,从网页中打开 2.按F12进入开发者模式,进行抓包 3 ...

  2. python爬取歌曲评论_python 爬取歌曲评论的简单示例

    这篇文章主要为大家详细介绍了python 爬取歌曲评论的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣python 爬取歌曲评论的简单示例的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. ...

  3. 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云

    简介:快来拿出你珍藏的pick star,用大家对他的爱重塑一个他吧.通过爬取微博评论,制作你的偶像图片词云,天天都是不重样的哦! 很多人学习python,不知道从何学起. 很多人学习python,掌 ...

  4. python3爬取微博评论教程_用python 爬取微博评论,怎么打开微博评论下的查看更多|...

    怎样用python爬新浪微博大V所有数据 先上结论,通过公开的api如爬到某大v的所有数据,需足以下两个条件: 1.在你的爬虫开始运行时,该大v的所有微博发布量没有超过回溯查询的上限,新浪是2000, ...

  5. python爬取微博评论(无重复数据)

    python爬取微博评论(无重复数据) 前言 一.整体思路 二.获取微博地址 1.获取ajax地址2.解析页面中的微博地址3.获取指定用户微博地址 三.获取主评论 四.获取子评论 1.解析子评论2.获 ...

  6. python爬取视频评论数据

    现在人们都喜欢看小视频,我平时没事的时候也喜欢看些小视频,所以今天我就带大家用python爬取一些小视频数据. 分析网页 打开目标网站,我们在搜索栏里面搜索一下自己感兴趣的关键字,比如我搜索 &quo ...

  7. python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据

    python 爬虫 爬微博分析 数据 最近刚看完爱情公寓5,里面的大力也太好看了吧... 打开成果的微博,小作文一样的微博看着也太爽了吧... 来 用python分析分析 狗哥这几年微博的干了些啥. ...

  8. python爬取快手粉丝榜_[Python] 【原创开源】快手爬虫,根据id批量爬取用户的所有图集和视频...

    分享 写在前面代码功能如题,根据快手用户的id来爬取用户所有公开作品,包括图集和视频. 原理:其实就是利用基于chromium内核的浏览器自带的devtools对所有请求进行排查找出包含作品链接的请求 ...

  9. python爬取豆瓣评论,并制作成词云

    一.爬取豆瓣热评 该程序进行爬取豆瓣热评,将爬取的评论(json文件)保存到与该python文件同一级目录下 注意需要下载这几个库:requests.lxml.json.time import req ...

最新文章

  1. IC基础知识(1)集成电路(IC)简介
  2. 分享Kali Linux 2017年第29周镜像文件
  3. Linux查看ip的命令详解
  4. php elasticsearch ik,elasticsearch和analysis-ik的安装使用
  5. linux permit用法,技术|12 条实用的 zypper 命令范例
  6. Native C++ _isnan()函数的应用
  7. 英语语法---形容词短语详解
  8. hive中的数据库与mysql中的hive数据库的关系
  9. 2016年10月30日表单标签与样式表分类和选择器
  10. P4414 [COCI2006-2007#2] ABC(python3实现)
  11. SQL Server2008数据库用户管理 (第三部分)
  12. Unit5 Survival Shooter笔记3
  13. 初步学习Django-第八篇:ORM常用操作
  14. Linux vsFTPd服务详解——文件加密传输配置
  15. Appium环境搭建教程
  16. 【测试报告】功能测试范例模板
  17. html5 指南针,14.html5 作业 简单移动端-指南针 用 canvas 画一下.
  18. vue报错elementUI使用datepicker报错Avoid mutating a prop directly since the value will be overwritten whene
  19. 机器人改变生活利弊英语作文_机器人的利弊作文
  20. python: 内建函式round() 是四舍五入还是五舍六入?

热门文章

  1. 开讲啦:《Python3进阶实战》
  2. idea中使用maven以后出现了程序包不存在的问题
  3. python解析json数据的三种方式
  4. HBase是如何应用LSM树存储思想的
  5. java解析excel的js页面,js读取excel文件并显示
  6. python12306自动抢票为什么进入个人中心,python自动登录12306并自动点击验证码完成登录的实现源代码...
  7. OpenFire源码学习之六:用户注册
  8. thinkPHP_V5漏洞
  9. 云计算学习入门:云计算的可用性怎么样?
  10. 福建厦门双十计算机竞赛,进国家队!福建5名学生获清华北大保送资格