【Python爬虫】看电影还在用VIP?一个python代码让你实现电影自由!附源码

server/2024/10/17 22:31:40/

今日主题

如何用Python解析vip电影。

什么是vip电影?

这些vip电影啊,想要观看的话,必须充值会员,否则没法看。

比如这个:

图片

这些vip电影解析后呢?

不需要会员,不需要登录,可以直接观看。

比如,正确解析后如下:

图片

话不多说,我们直接开整! 

准备工作

  • 环境使用

Python 3.10 (不一定3.10,只要不是Python2就行)
Pycharm

  • 模块使用

requests >>> pip install requests

为了让大家更好的学会这个案例,已经把源码打包好了,方便大家使用,给你们直接做成exe了
仅限于学习使用,请勿商用哈

由于篇幅限制,无法展示完整代码,我直接将代码打包上传,安全无毒,100%免费,可在下方获取!


案例实现的基本流程

一、数据来源分析

1.明确需求

明确采集的网站以及数据内容

  • 网址:几大播放器懂的都懂
  • 数据: 视频内容 (链接)

2.抓包分析
通过浏览器开发者工具分析对应数据位置

 pc端: 网页浏览器自带开发者工具抓包分析   
 app: 利用第三方抓包工具去分析数据位置

  • 打开开发者工具 
  • F12 / 右键点击检查选择network(网络)
  • 刷新网页
  • 让本网页的数据内容重新加载一遍
  • 通过关键字搜索找到对应数据位置
  • 通过链接中一段进行搜索
  • 关键字: 需要什么数据就搜什么数据

项目对于视频网站数据采集

开发者工具 -> 网络 -> 媒体文件 -> 对应视频链接

数据包地址: https://www.kuaishou.com/graphql

二、代码实现步骤

1.发送请求

模拟浏览器对于url地址发送请求

模拟浏览器

python">一种简单反反爬手段: 相关参数内容可以复制  -开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 请求标头  
代码格式:  字典形式  -需要构建完整的键值对  
字典形式:  dit = {'key': 'value', 'key1': 'value1'}  -key键  -value值  'key': 'value' 键值对  

请求网址

刚刚通过抓包分析找到链接地址

发送请求

  • 一般情况: 使用第三方模块 requests
  • 请求方法: 在对应数据包中 -> 标头 -> 常规 -> 请求方法
  • POST
  • 请求参数:
  • POST请求: 需要传递表单数据 (载荷中查看)

2.获取数据

  • 获取服务器返回响应数据
  • response.text

获取响应文本数据 -> 字符串

一般情况在获取网页源代码的时候


response.json()

获取响应json数据 -> 字典

必须是完整的json数据格式


response.content

获取响应二进制数据 -> 二进制

一般用于获取图片/视频/音频/特定格式文件… 数据内容的时候

采集视频: 视频地址  
         对于视频地址发送请求 -> 获取二进制数据进行相关数据保存  

3.解析数据
提取我们需要的数据内容字典取值

一般获取json数据, 可能存在多层嵌套  
    dit = {'key': 'value', 'key1': 'value1'}  
    json = {'A': '1', 'B': {'B1': '2', 'B3': '3'}}  
键值对取值: 根据冒号左边的内容[键], 提取冒号右边的内容[值]  
    一层一层提取  
比如提取数字3: json['B']['B3'] -> '3'  

4.保存数据
获取视频内容, 进行本地保存

相对路径: 相当于代码所在文件路径 -> video 代码文件目录video文件夹
绝对路径: c盘->文件夹->那个文件路径

三、代码展示

python"># 导入数据请求模块
import requests
# 导入文件操作模块
import os
# 定义文件夹名字
file = 'video'
# 判断文件夹是否存在
if not os.path.exists(file):# 创建文件夹os.mkdir(file)
"""发送请求"""
# 模拟浏览器
headers = {# User-Agent 用户代理, 表示浏览器基本上身份信息'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
}
for page in range(28):try:# 请求网址url = 'https://www.kuaishou.com/graphql'# 请求参数data = {"operationName":"visionTubeEpisodeQuery","variables":{"tubeId":"5x4jwip27r8g6wg","episodeNumber":page,"page":"theater","channelId":0},"query":"fragment photoContent on PhotoEntity {\n  __typename\n  id\n  duration\n  caption\n  originCaption\n  likeCount\n  viewCount\n  commentCount\n  realLikeCount\n  coverUrl\n  photoUrl\n  photoH265Url\n  manifest\n  manifestH265\n  videoResource\n  coverUrls {\n    url\n    __typename\n  }\n  timestamp\n  expTag\n  animatedCoverUrl\n  distance\n  videoRatio\n  liked\n  stereoType\n  profileUserTopPhoto\n  musicBlocked\n  riskTagContent\n  riskTagUrl\n}\n\nfragment recoPhotoFragment on recoPhotoEntity {\n  __typename\n  id\n  duration\n  caption\n  originCaption\n  likeCount\n  viewCount\n  commentCount\n  realLikeCount\n  coverUrl\n  photoUrl\n  photoH265Url\n  manifest\n  manifestH265\n  videoResource\n  coverUrls {\n    url\n    __typename\n  }\n  timestamp\n  expTag\n  animatedCoverUrl\n  distance\n  videoRatio\n  liked\n  stereoType\n  profileUserTopPhoto\n  musicBlocked\n  riskTagContent\n  riskTagUrl\n}\n\nfragment feedContent on Feed {\n  type\n  author {\n    id\n    name\n    headerUrl\n    following\n    headerUrls {\n      url\n      __typename\n    }\n    __typename\n  }\n  photo {\n    ...photoContent\n    ...recoPhotoFragment\n    __typename\n  }\n  canAddComment\n  llsid\n  status\n  currentPcursor\n  tags {\n    type\n    name\n    __typename\n  }\n  __typename\n}\n\nquery visionTubeEpisodeQuery($tubeId: String, $episodeNumber: Int, $page: String, $channelId: Int, $webPageArea: String) {\n  visionTubeEpisode(tubeId: $tubeId, episodeNumber: $episodeNumber, page: $page, channelId: $channelId, webPageArea: $webPageArea) {\n    ...feedContent\n    result\n    status\n    __typename\n  }\n}\n"}# 发送请求response = requests.post(url=url, json=data, headers=headers)"""获取数据"""# 获取响应的json数据json_data = response.json()"""解析数据"""# 提取视频链接video_url = json_data['data']['visionTubeEpisode']['photo']['photoUrl']# 提取短剧名title = json_data['data']['visionTubeEpisode']['tags'][2]['name']print(title)print(video_url)"""保存数据"""# 获取视频内容video_content = requests.get(url=video_url, headers=headers).content# 数据保存 w写入数据覆盖 b二进制 wb二进制保存 ()with open('video\\' + title + str(page) + '.mp4', mode='wb') as f:# 写入数据f.write(video_content)except:pass

由于篇幅限制,无法展示完整代码,我直接将代码打包上传,安全无毒,100%免费,可在下方获取!

 ​​


http://www.ppmy.cn/server/132597.html

相关文章

第十二章 RabbitMQ之失败消息处理策略

目录 一、引言 二、RepublishMessageRecoverer 实现 2.1. 实现步骤 2.2. 实现代码 2.2.1. 异常交换机队列回收期配置类 2.2.2. 常规交换机队列配置类 2.2.3. 消费者代码 2.2.4. 消费者yml配置 2.2.5. 生产者代码 2.2.6. 生产者yml配置 2.2.7. 运行效果 一、引言 …

Pr 音频效果快速参考(合集 · 2025版)

Adobe Premiere Pro 中提供了丰富的音频效果,帮助用户在视频编辑过程中调整和增强音频质量。这些音频效果涵盖了振幅与压限、延迟与回声、滤波器与 EQ、调制、降噪/恢复、混响、特殊效果、立体声声像、时间与变调等多个类别。通过合理使用这些效果,可以提…

iOS 大数相乘

首先说清楚2个概念: 概念1.一个M位数 与一个N位数 相乘,乘积的位数一定小于等于(NM). 如.2数99 乘以 4位数 9999, 其结果为 989901 ,为24 6位数. 上面的概念很重要,因为我们要创建一个初始值都为0, 元素个数为(MN) 的数组, 例如:99x918,我们需要创建23的元素的resultArray[0,…

网站集群批量管理-Ansible-进阶

1. 流程控制 1.1 handlers触发器 应用场景: 1. 一般用于分发配置文件的时候 2. 如果配置文件发生变化则重启服务,如果没有变化则重启 3. 注意事项: handlers放在剧本的最后,否则都会被识别为handlers 没有使用触发器handlers - hosts: alltasks:- name: 分发文件copy:src: /e…

[含文档+PPT+源码等]精品基于Python实现的flask专家管理系统[包运行成功+永久免费答疑辅导]

基于Python实现的Flask专家管理系统的背景,可以从以下几个方面进行详细阐述: 一、专家资源管理的重要性 在现代社会中,各领域专家资源对于推动科技进步、解决复杂问题以及提升决策质量等方面具有不可替代的作用。然而,传统的专家…

Edge论文的创新点

创新点及其来源 1. 从灰度边缘重建RGB图像的方法(EdgRec) 基于的方法:传统的重建方法,如使用自动编码器或生成模型来重建正常样本的图像,并通过对原始图像和重建图像的比较来检测异常。 重建过程: 训练阶…

大数据面试题整理——Zookeeper

系列文章目录 大数据面试题专栏点击进入 文章目录 系列文章目录大数据面试题专栏点击进入 1. 什么是 Zookeeper?2. Zookeeper 的特点有哪些?3. Zookeeper 的数据模型是怎样的?4. Zookeeper 的工作流程是怎样的?5. Zookeeper 如何…

ROS理论与实践学习笔记——6 ROS机器人导航(仿真)之导航实现

准备工作&#xff1a;请先安装相关的ROS功能包 安装 gmapping 包(用于构建地图):sudo apt install ros-<ROS版本>-gmapping 安装地图服务包(用于保存与读取地图):sudo apt install ros-<ROS版本>-map-server 安装 navigation 包(用于定位以及路径规划):sudo apt in…