前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python采集西瓜视频数据,1080P无水印视频版

Python采集西瓜视频数据,1080P无水印视频版

作者头像
松鼠爱吃饼干
发布2022-01-24 09:13:48
2.3K0
发布2022-01-24 09:13:48
举报
文章被收录于专栏:Python分享

知识点

  • 动态数据抓包
  • 动态页面分析
  • requests携带参数发送请求
  • json数据解析

开发环境

  • python 3.8 更加新 稳定 运行代码
  • pycharm 2021.2 辅助敲代码
  • requests 第三方模块

一. 数据来源分析(思路分析)

1. 打开一个作者视频页面

2. 打开开发者工具刷新网页

  • 右键点击检查 或者 F12 打开
  • 选择network 然后刷新网页
  • 随便点击打开一个视频
  • 点击搜到的内容
  • 依次展开查看, 去找到我们需要的视频地址

4. 确定url地址, 请求方式, 请求参数, 请求头参数

  • 请求头参数
  • 请求参数

5. 总结

  • 请求方式: POST
  • 请求头(伪装):
代码语言:javascript
复制
headers = {
'content-type': 'application/json',
'Cookie': '你自己的cookie',
'Host': 'www.kuaishou.com',
'Origin': 'https://www.kuaishou.com',
'Referer': 'https://www.kuaishou.com/profile/3xv78fxycm35nn4',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
  • 请求参数:
代码语言:javascript
复制
data = {
'operationName': "visionProfilePhotoList",
'query': "query visionProfilePhotoList($pcursor: String, $userId: String, $page:
String, $webPageArea: String) {\n visionProfilePhotoList(pcursor: $pcursor, userId:
$userId, 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 coverUrls {\n cdn\n url\n __typename\n
}\n photoUrls {\n cdn\n url\n __typename\n
}\n photoUrl\n liked\n timestamp\n expTag\n
animatedCoverUrl\n stereoType\n videoRatio\n
profileUserTopPhoto\n __typename\n }\n canAddComment\n
currentPcursor\n llsid\n status\n __typename\n }\n hostName\n
pcursor\n __typename\n }\n}\n",
'variables': {'userId': "3x9dquvtb9n9fps", 'pcursor': "", 'page': "profile"}
}
  • 后续如果需要翻页爬取, 需要使用递归实现

二. 代码实现

1. 发送请求 访问网站

代码语言:javascript
复制
url = 'https://www.kuaishou.com/graphql'
# 伪装
headers = {
    # 控制data类型 json类型字符串
    'content-type': 'application/json',
    'Cookie': 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_ea128125517a46bd491ae9ccb255e242; client_key=65890b29; userId=270932146; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABnjkpJPZ-QanEQnI0XWMVZxXtIqPj-hwjsXBn9DHaTzispQcLjGR-5Xr-rY4VFaIC-egxv508oQoRYdgafhxSBpZYqLnApsaeuAaoLj2xMbRoytYGCrTLF6vVWJvzz3nzBVzNSyrXyhz-RTlRJP4xe1VjSp7XLNLRnVFVEtGPuBz0xkOnemy7-1-k6FEwoPIbOau9qgO5mukNg0qQ2NLz_xoSKS0sDuL1vMmNDXbwL4KX-qDmIiCWJ_fVUQoL5jjg3553H5iUdvpNxx97u6I6MkKEzwOaSigFMAE; kuaishou.server.web_ph=b282f9af819333f3d13e9c45765ed62560a1',
    'Host': 'www.kuaishou.com',
    'Origin': 'https://www.kuaishou.com',
    'Referer': 'https://www.kuaishou.com/profile/3xauthkq46ftgkg',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
}
# <Response [200]>: 发送请求成功结果
response = requests.post(url=url, headers=headers, json=data)

2. 获取数据

代码语言:javascript
复制
json_data = response.json()

3. 解析数据 去除不想要的内容

代码语言:javascript
复制
feeds = json_data['data']['visionProfilePhotoList']['feeds']
# 下一页需要的参数
pcursor = json_data['data']['visionProfilePhotoList']['pcursor']
# print(pcursor)
for feed in feeds:
    caption = feed['photo']['caption']    # 标题
    photoUrl = feed['photo']['photoUrl']   # 视频链接
    # \: 转义字符, 直接写\ 匹配不到 \
    # \\ 才能匹配到 \
    # 用css和xpath 是必须要你拿到的数据是一个网页源代码
    caption = re.sub('[\\/:*?"<>|\n\t]', '', caption)
    print(caption, photoUrl)

5. 获取数据 视频数据 拿到的是视频二进制数据

代码语言:javascript
复制
video_data = requests.get(url=photoUrl).content

6. 保存视频 通过二进制的方式保存

代码语言:javascript
复制
with open(f'video/{caption}.mp4', mode='wb') as f:
    f.write(video_data)
print(caption, '下载完成!')

翻页爬取

代码语言:javascript
复制
def get_page(pcursor):
    # 需要的数据得指定好
    # 递归, 自己调用自己 跳出递归
    data = {
        'operationName': "visionProfilePhotoList",
        'query': "query visionProfilePhotoList($pcursor: String, $userId: String, $page: String, $webPageArea: String) {\n  visionProfilePhotoList(pcursor: $pcursor, userId: $userId, 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        coverUrls {\n          cdn\n          url\n          __typename\n        }\n        photoUrls {\n          cdn\n          url\n          __typename\n        }\n        photoUrl\n        liked\n        timestamp\n        expTag\n        animatedCoverUrl\n        stereoType\n        videoRatio\n        profileUserTopPhoto\n        __typename\n      }\n      canAddComment\n      currentPcursor\n      llsid\n      status\n      __typename\n    }\n    hostName\n    pcursor\n    __typename\n  }\n}\n",
        'variables': {'userId': "3xauthkq46ftgkg", 'pcursor': pcursor, 'page': "profile"}
    }
    if pcursor == None:
        print('全部下载完成')
        return 0
    
    get_page(pcursor)

get_page('')

效果展示

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 松鼠爱吃饼干 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 知识点
  • 开发环境
  • 一. 数据来源分析(思路分析)
    • 1. 打开一个作者视频页面
      • 2. 打开开发者工具刷新网页
        • 4. 确定url地址, 请求方式, 请求参数, 请求头参数
          • 5. 总结
          • 二. 代码实现
            • 1. 发送请求 访问网站
              • 2. 获取数据
                • 3. 解析数据 去除不想要的内容
                  • 5. 获取数据 视频数据 拿到的是视频二进制数据
                    • 6. 保存视频 通过二进制的方式保存
                      • 翻页爬取
                      • 效果展示
                      相关产品与服务
                      云开发 CLI 工具
                      云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档