爬快手,graphql查询语言
graphql查询语言:https://blog.csdn.net/qq_41882147/article/details/82966783
即:前端调用同一个接口传入不同的操作,得到不同的返回值
一直爬会封ip。
import requests, json, re, time headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36",
"Cookie": "kuaishou.live.bfb1s=9b8f70844293bed778aade6e0a8f9942; clientid=3; did=web_a9d0c104cbfd24374a5dad685b26dd70; client_key=65890b29; didv=1594279985370; Hm_lvt_86a27b7db2c5c0ae37fee4a8a35033ee=1594622985; Hm_lpvt_86a27b7db2c5c0ae37fee4a8a35033ee=1594885138; userId=127345174; userId=127345174; kuaishou.live.web_st=ChRrdWFpc2hvdS5saXZlLndlYi5zdBKgAVwApsvd6d5LEq37Xwy4gVgfinmYKMKK5hT0t2Dl7nctTR46oTuc1Ku530mlTABB5PbNPqsDF4m5GjgTeFBbDgi4xBQ3cXCQHWfg-T7b9259MfvgaMoKB-r4R92eUR3VgXQz8bK7cJDrX_zKVEhh3WZscoFagE2xXXmFB9nXlmXMei2w5TAQih60pOlFpVMgqakLULnxvPY-BFIlNyoUlU8aEgCrAu8bFEUPixNgRvVq1Nb0ZSIglCraqHTuUQ_z3VWWktXq5nxr2SJYhM3aujbIbG9pAj0oBTAB; kuaishou.live.web_ph=3e0f6f0394323c61795f3382dabebad6f407"} def get_page1():
response = requests.get(url="https://live.kuaishou.com/profile/TXXW-666666", headers=headers)
res = response.text
# print(res)
video_page1 = re.findall('"id":"VideoFeed:(.*?)"',res)
print(video_page1) def get_video(resp):
eid = re.findall('"id":"(.*?)"',resp)
id = []
count = 0
while len(eid)>count: id.append(eid[count])
count=count+2 print(id)
return id def get_page(pcursor):
json0 = {
"operationName": "publicFeedsQuery",
"variables": {
"principalId": "TXXW-666666",
"pcursor": pcursor,
"count": 24
},
"query": "query publicFeedsQuery($principalId: String, $pcursor: String, $count: Int) { publicFeeds(principalId: $principalId, pcursor: $pcursor, count: $count) { pcursor live { user { id avatar name __typename } watchingCount poster coverUrl caption id playUrls { quality url __typename } quality gameInfo { category name pubgSurvival type kingHero __typename } hasRedPack liveGuess expTag __typename } list { id thumbnailUrl poster workType type useVideoPlayer imgUrls imgSizes magicFace musicName caption location liked onlyFollowerCanComment relativeHeight timestamp width height counts { displayView displayLike displayComment __typename } user { id eid name avatar __typename } expTag __typename } __typename }}"
} resp = requests.post(url="https://live.kuaishou.com/m_graphql",headers=headers,json=json0).text
resp_page = json.loads(resp)["data"]["publicFeeds"]["pcursor"]
# print(resp)
# li = json.loads(resp)["data"]["publicFeeds"]["list"]
# print(li) id = get_video(resp)
uri_list = video_address(id) video_detial(uri_list) return get_page(resp_page) def video_address(id):
url_list = []
for i in range(len(id)):
url_list.append("https://live.kuaishou.com/u/TXXW-666666/"+id[i]+"?did=web_a9d0c104cbfd24374a5dad685b26dd70") return url_list def video_detial(uri_list):
for i in range(len(uri_list)):
uri = uri_list[i] response = requests.get(url=uri,headers=headers).text
# time.sleep(0.5)
try:
# 标题
title = re.findall('"caption":"(.*?)"',response)[0]
# 播放量
playback = re.findall('"displayView":"(.*?)"',response)[0]
# 点赞数
playlike = re.findall('"displayLike":"(.*?)"',response)[0]
print(uri,title,playback,playlike)
except Exception as e:
print(uri,"暂无数据") if __name__ == '__main__':
# get_page("")
get_page1()
爬快手,graphql查询语言的更多相关文章
- Graphql介绍(Introduction to GraphQL)
Introduction to GraphQL GraphQL介绍 Learn about GraphQL, how it works, and how to use it in this seri ...
- GraphQL&DSL&API网关
车联网服务non-RESTful架构改造实践 导读 在构建面向企业项目.多端的内容聚合类在线服务API设计的过程中,由于其定制特点,采用常规的restful开发模式,通常会导致大量雷同API重复开 ...
- REST 架构的替代方案 为什么说GraphQL是API的未来?
Managing enterprise accounts - GitHub Docs https://docs.github.com/en/graphql/guides/managing-enterp ...
- Github上优秀的.NET Core项目
Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:htt ...
- 【转载】Github上优秀的.NET Core项目
Github上优秀的.NET Core项目 Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志. ...
- Github上优秀的.NET Core开源项目的集合
内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:https://github.com/jasonhua95/ ...
- Facebook发布React 16 专利条款改为MIT开源协议
9 月 26 日,用于构建 UI 的 JavaScript 库 React 16 的最新版本上线. Facebook 最终在现有的两种 React 版本中选择了出现 bug 概率最少的一款.这次版本更 ...
- 一系列令人敬畏的.NET核心库,工具,框架和软件
内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...
- F#周报2019年第27期
新闻 介绍Femto--使用Fable绑定的自动化npm包解决方案 Babel 7.5.0发布,包含动态导入与F#管道 iOS 13预览版发布 视频及幻灯片 Fabulous--F#用于跨平台移动应用 ...
- 车联网服务non-RESTful架构改造实践
导读 在构建面向企业项目.多端的内容聚合类在线服务API设计的过程中,由于其定制特点,采用常规的restful开发模式,通常会导致大量雷同API重复开发的窘境,本文介绍一种GraphQL查询语言+网关 ...
随机推荐
- docker容器生命周期管理
查看容器版本 docker version [root@node1 ~]# docker version Client: Docker Engine - Community Version: 20.1 ...
- UGUI获取文本的字符内容像素宽度 【转】
在做文本框的时候,我们经常碰到需要计算字符输入的长度,然后适当地做处理.这个时候不能直接了当地拿text.Length来用,原因有: 1.字符会因为fontSize的大小不同而有不同的宽度: 2.即使 ...
- mysql 1130报错只允许localhost登录解决方法
提示:这些方法会改变登录权限,如果是生产服务器端谨慎操作!!! mysql出现错误码1130的解决办法: 错误描述: 错误代码:1130Host ***.***.***.*** is not allo ...
- Vue3.0 里为什么要用 Proxy API 替代 defineProperty API?
响应式优化. a. defineProperty API 的局限性最大原因是它只能针对单例属性做监听. Vue2.x 中的响应式实现正是基于 defineProperty 中的 descriptor, ...
- nacos之服务注册、发现及维持心跳
注册服务(增加健康检查) 服务发现(默认15s没有心跳请求,则自动注销服务) 心跳(维持服务运行状态) 参数说明 serviceName:服务名称 beat:服务的详细信息 ip 端口等,json ...
- 渗透测试工具&导航合集
#前言 表哥们一般都有自己强大的工具库,今天我也稍作整理,分享交流出来一部分 #信息收集 ####dirbuster kali自带的一款工具,fuzz很方便 ####gorailgun 一款自动化做的 ...
- Windows 分层窗口 桌面上透明 Direct3D
Windows 分层窗口 桌面上透明 Direct3D 1 //IDirect3DSurface9 GetDC UpdateLayeredWindow 2 3 #include <Windows ...
- 管理名称空间资源(Kubernetes)
管理名称空间资源 名称空间(Namespace)是Kubernetes集群级别的资源,用于将集群分隔为多个隔离的逻辑分区以配置给不同的用户.租户.环境或项目使用.例如,可以为development.q ...
- 微信小程序云开发,快速生成短信验证码
使用微信小程序云函数实现注册短信验证码的管理,并不是一件分分钟的事,目前想要存储验证码只能放到数据库中,因为存储后才能和用户提交上来的验证码做比较. 管理验证码主要涉及到:生成.存储.校验.有效期管理 ...
- FFT简单概述
概念 快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效.快速计算方法的统称,简称FFT.快速傅里叶变换是1965年由J.W.库利和T. ...