当前位置:
首页 > temp > python入门教程 >
-
Python爬虫入门案例教学:快手高清视频下载
前言
今天分享的案例是Python爬取快手短视频平台高清无水印视频
主要知识点:
- requests
- json
- re
- pprint
开发环境:
- 版 本:anaconda5.2.0(python3.6.5)
- 编辑器:pycharm
【付费VIP完整版】只要看了就能学会的教程,80集Python基础入门视频教学
点这里即可免费在线观看
案例实现步骤:
- 找到目标网址 https://www.kuaishou.com/graphql
- 发送请求 get post
- 解析数据 (视频地址 视频标题)
- 发送请求 请求每一个视频的地址
- 保存视频
开始实现代码
1. 导入模块
import requests import pprint import json import re
2. 请求数据
headers = { # data内容类型 # application/json: 传入json类型数据 json 浏览器跟 快手服务器 交流(数据传输格式)的方式 # 默认格式: application/x-www-form-urlencoded 'content-type': 'application/json', # cookie: 用户身份标识 有没有登录 'Cookie': 'did=web_53827e0b098c608bc6f42524b1f3211a; didv=1617281516668; kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3', # User-Agent: 浏览器信息(用来伪装成浏览器) '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 = { 'operationName': "visionSearchPhoto", '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", 'variables': { 'keyword': keyword, 'pcursor': str(page), 'page': "search" # 发送请求 response = requests.post('https://www.kuaishou.com/graphql', headers=headers, data=data)
解析数据
for page in range(0, 11): print(f'-----------------------正在爬取{page+1}页----------------------') json_data = response.json() data_list = json_data['data']['visionSearchPhoto']['feeds'] for data in data_list: title = data['photo']['caption'] url_1 = data['photo']['photoUrl'] new_title = re.sub(r'[/\:*?"<>|\n]', '_', title) # print(title, url_1) # content: 获取到的二进制数据 # 文字 text # 图片 视频 音频 二进制数据 content = requests.get(url_1).content
保存数据
with open('./video/' + new_title + '.mp4', mode='wb') as f: f.write(content) print(new_title, '爬取成功!!!')
出处:https://www.cnblogs.com/qshhl/p/15264387.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数