首页
薅羊毛
工具
留言板
更多
关于
Search
1
青龙挂某手极速版,某条极速版,饿了么,美团脚本!
8,605 阅读
2
IOS微信无需越狱导入自己喜欢的语音包!
5,190 阅读
3
IOS免越狱自签教程!
5,026 阅读
4
删除mysql表卡死 , 打不开,一直转圈圈
2,423 阅读
5
Java中批量修改List集合中某个字段的两种方法
2,093 阅读
JAVA
面试
前端
Python
易语言
其他
登录
Search
尼采
累计撰写
72
篇文章
累计收到
19
条评论
首页
栏目
JAVA
面试
前端
Python
易语言
其他
页面
薅羊毛
工具
留言板
关于
搜索到
1
篇与
Python
的结果
2021-12-19
Python爬快手小姐姐视频
今天来一个简单的用python爬取快手视频并下载的教程,也算是自学python的第一个案例 如何安装python,配置环境,解析器在这里就不过多阐述了,直接开始第一步: 导入三个库:import requests #用来模拟浏览器发送请求import json #用来发送json格式数据import re #正则表达式第二步: 1.打开网页版快手进行分析 2.F12打开开发者工具,Network,搜索你想要搜索的关键词 3.通过分析请求的结果,发现这个请求获取的数据正是我们想要的 4.我们看他的请求头,请求的地址和请求方式第三步:根据上面的分析结果,定义请求地址uurl = 'https://www.kuaishou.com/graphql'为了不让快手识别出我们是爬虫程序,所以我们还需要一些参数进行伪装我们可以全都复制下来,定义一个headers,放里面,我这里只取了几个重要的headers = { "content-type": 'application/json', "Cookie": 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_d5468278a1e92934b3751f249005ffd3; client_key=65890b29; userId=1002026148; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABb3k7H6FPn5rPTxi_U90A1EyivbCG1lWIL1_rV6NDVpXzhBc1jBu7ym59g3fUExHe5ZNBf8YKAXnF2IL0cRoE0cCKrTTndeqWCsDxF5FFXwEjJVAWhZTi87lyyhTvvOBDBgG7AZ03thuTfr_QXmvbueTi9Yd_RBKwIWhWZ9cY88tn8OqN_4iX9l7mHh7PvK7eCnL3BXSM0JABpysi1936rxoS1KQylfZfbCBEuMI0IcjfqenKIiBZWJZqfmVkyM3JqsKIBJh0A-rz8bGOJ_hOfif7PIQInSgFMAE; kuaishou.server.web_ph=4185d09841f87d0bcad53e5c0029de4c6304', "Host": 'www.kuaishou.com', "Origin": 'https://www.kuaishou.com', "Referer": 'https://www.kuaishou.com/search/video?searchKey=%E6%80%A7%E6%84%9F', "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36', }注意的是,我们要用{}字典来装这些数据,键:值的形式表示第四步:有了伪装,我们还需要请求数据,让他知道我们想要什么数据复制这部分内容,定义一个data来装data = { "operationName": "visionSearchPhoto", "variables": {"keyword": "小姐姐", "pcursor": "", "page": "search"}, "query": "query visionSearchPhoto($keyword: String, $pcursor: String, $searchSessionId: String, $page: String, $webPageArea: String) {\n visionSearchPhoto(keyword: $keyword, pcursor: $pcursor, searchSessionId: $searchSessionId, page: $page, webPageArea: $webPageArea) {\n result\n llsid\n webPageArea\n feeds {\n type\n author {\n id\n name\n following\n headerUrl\n headerUrls {\n cdn\n url\n __typename\n }\n __typename\n }\n tags {\n type\n name\n __typename\n }\n photo {\n id\n duration\n caption\n likeCount\n realLikeCount\n coverUrl\n photoUrl\n liked\n timestamp\n expTag\n coverUrls {\n cdn\n url\n __typename\n }\n photoUrls {\n cdn\n url\n __typename\n }\n animatedCoverUrl\n stereoType\n videoRatio\n __typename\n }\n canAddComment\n currentPcursor\n llsid\n status\n __typename\n }\n searchSessionId\n pcursor\n aladdinBanner {\n imgUrl\n link\n __typename\n }\n __typename\n }\n}\n" }注意的是这里data数据是字典,请求并不会是我们想要的结果,我们需要将他转换为json格式# 将字典转换为json格式 data = json.dumps(data)第五步:发送请求获取数据# 发送请求获取到的数据 response = requests.post(url, data=data, headers=headers)这是我们可以打印下结果,看获取到了没有print(response.json())上面控制台输出的就是我们获取的数据上图是网页上获取的数据,此时数据一样,说明我们获取的数据没问题,那么接下来就是提取视频地址了第六步:获取视频文案,视频地址我们获取到的是json格式的数据,看下这个结构看我标注的框框,你就会发现,视频地址和文案都在一层一层的最深层,其实也很简单首先前几个都是字典,所以在python中我们可以用[]获取# 解析数据 data_list = response.json()['data']['visionSearchPhoto']['feeds']此时我们再打印下,发现获取到了数据是[]开头的,说明是列表,也就意味着这个里面有很多个视频对象第七步:遍历这个列表,拿到每一个视频信息# 遍历拿到每一条 for feed in data_list:从每一条中获取文案和视频地址#每条视频的文案 caption=feed['photo']['caption'] #每条视频的视频地址 photoUrl=feed['photo']['photoUrl']我们打印下,看结果:以上就是我们要获取的数据了,接下来我们进行保存第八步:无水印保存到本地我们先将文案解析下,作为视频的标题保存,在这里我们用到了re库,正则表达式 new_caption = re.sub(r'[\/:*?"<>|\n\\]', '_', caption)请求每一个视频地址: # 请求视频的地址.content是二进制 rsp = requests.get(photoUrl).content最后就是下载视频了 # 下载视频 with open('video\\' + new_caption + '.mp4', mode='wb') as f: f.write(rsp) print(caption, '下载完成')运行下,看结果:本地文件夹;都是高清无水印视频都是一些简单的python知识,我也是刚开始学,算是一个入门案例了,大佬勿喷,代码放在Gitee了,需要自取。 Gitee地址
2021年12月19日
601 阅读
0 评论
4 点赞