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

今日主题

如何用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地址发送请求

模拟浏览器

一种简单反反爬手段: 相关参数内容可以复制  
     -开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 请求标头  
代码格式:  字典形式  
    -需要构建完整的键值对  
字典形式:  
    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盘->文件夹->那个文件路径

三、代码展示

# 导入数据请求模块
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%免费,可在下方获取!

 ​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893035.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4、.Net 快速开发框架:DncZeus - 开源项目研究文章

DncZeus 是一个基于 ASP.NET Core 和 Vue.js 的前后端分离的通用后台管理系统框架,其愿景是成为一个易于使用且功能丰富的 .NET Core 通用后台权限管理模板系统基础框架。项目名称 "DncZeus" 由 "Dnc"(.NET Core 的缩写)和 "Zeus"(古…

STMicroelectronics 意法半导体芯片选型表

意法半导体作为全球知名的半导体厂商,其产品广泛应用于各个领域,从消费电子到工业控制,从汽车电子到通信设备,都能看到意法半导体芯片的身影。在电子硬件设计领域,芯片的选型至关重要。亿配芯城(ICgoodFind…

SpringBoot+MyBatis+MySQL项目基础搭建

一、新建项目 1.1 新建springboot项目 新建项目 选择SpringBoot,填写基本信息,主要是JDK版本和项目构建方式,此处以JDK17和Maven举例。 1.2 引入依赖 选择SpringBoot版本,勾选Lombok,Spring Web,MyBa…

线性代数知识学习

1.标量 简单操作 长度 2.向量 parallel for all do 点乘、正交 3.矩阵 乘法(矩阵乘以向量) 4.范数 取決于如何衡量b和c的长度 常见范数 矩阵范数:最小的满足的…

小猿口算炸鱼脚本

目录 写在前面: 一、关于小猿口算: 二、代码逻辑 1.数字识别 2.答题部分 三、代码分享: 补充:软件包下载 写在前面: 最近小猿口算已经被不少大学生攻占,小学生直呼有挂。原本是以为大学生都打着本…

【C语言】循环结构-for循环

循环结构&#xff1a;计算机最擅长的事情就是做简单重复的工作 通过控制循环变量&#xff0c;是否满足循环条件来调整循环次数。 for(初始化;循环条件;循环控制) {循环体; }#include <stdio.h> #include <math.h> /* 功能&#xff1a;循环结构&#xff08;for&…

[LeetCode] 695. 岛屿的最大面积

题目描述&#xff1a; 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&#xff09;包围着。 岛…

Java 小游戏《超级马里奥》

文章目录 一、效果展示二、代码编写1. 素材准备2. 创建窗口类3. 创建常量类4. 创建动作类5. 创建关卡类6. 创建障碍物类7. 创建马里奥类8. 编写程序入口 一、效果展示 二、代码编写 1. 素材准备 首先创建一个基本的 java 项目&#xff0c;并将本游戏需要用到的图片素材 image…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

推荐一个可以免费上传PDF产品图册的网站

​在数字化时代&#xff0c;企业将产品图册以PDF格式上传至网络&#xff0c;不仅便于客户浏览和下载&#xff0c;还能提升企业的专业形象。今天&#xff0c;就为您推荐一个可以免费上传PDF产品图册的网站——FLBOOK&#xff0c;轻松实现产品图册的在线展示。 1.注册登录&#x…

交通目标识别数据集YOLO 模型 ui界面✓图片数量15000,xml和txt标签都有 11类 交通道路车辆行人红黄绿数据集 红绿灯数据集 交通信号数据集

YOLO交通目标识别 数据集 模型 ui界面 ✓图片数量15000&#xff0c;xml和txt标签都有&#xff1b; ✓class&#xff1a;biker&#xff0c;car&#xff0c;pedestrian&#xff0c;trafficLight&#xff0c;trafficLight-Green&#xff0c;trafficLight-GreenLeft&#xff0c; tr…

调用第三方接口

目录 一、分析给出的接口文档 二、请求体格式之间的区别 三、示例代码 一、分析给出的接口文档 一般的接口文档包括以下几大部分&#xff1a; 1、请求URL&#xff1a;http://{ip}:{port}/api/ec/dev/message/sendCustomMessageSingle 2、请求方式&#xff1a;POST、GET等 3、…

3.C++经典实例-奇数还是偶数

要判断一个数是奇数还是偶数&#xff0c;只需要判断这个数是否能被2整除即可&#xff0c;如果要判断是否能整除&#xff0c;则要判断当前数除以2的余数是否为0&#xff0c;在C中&#xff0c;余数&#xff0c;使用%号&#xff0c;因此&#xff0c;程序为&#xff1a; #include …

缓存常见问题:缓存穿透、雪崩、击穿及解决方案分析

1. 什么是缓存穿透&#xff0c;怎么解决&#xff1f; 缓存穿透是指用户请求的数据在缓存中不存在即没有命中&#xff0c;同时在数据库中也不存在&#xff0c;导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据&#xff0c;会导致短时…

C++初阶学习第七弹——string的模拟实现

C初阶学习第六弹------标准库中的string类_c语言返回string-CSDN博客 通过上篇我们已经学习到了string类的基本使用&#xff0c;这里我们就试着模拟实现一些&#xff0c;我们主要实现一些常用到的函数。 目录 一、string类的构造 二、string类的拷贝构造 三、string类的析构函…

第十四届单片机嵌入式蓝桥杯

一、CubeMx配置 &#xff08;1&#xff09;LED配置 &#xff08;1&#xff09;LED灯里面用到了SN74HC573ADWR锁存器&#xff0c;这个锁存器有一个LE引脚,这个是我们芯片的锁存引脚&#xff08;使能引脚&#xff09;&#xff0c;由PD2这个端口来控制的 &#xff08;2&#xff…

13图书归还-云图书管理系统(Vue3+Spring Boot+element plus)

目录 1 接口地址2 后台代码RecordControllerBookController 3 view/books/BookRecordsVue中前端框架搭建4 api/record.js文件写查询用户借阅记录的接口代码5 api/book.js中写归还图书、查询当前借阅图书接口代码6 BookRecordsVue中导入接口函数&#xff0c;并调用7 运行效果 1 …

C++/初识C++

目录 一、前言 二、正文 1C语言第一个程序&#xff1a; 1.1C的第一个程序&#xff1a; 2.命名空间 2.1 namespace的价值 2.2namespace的定义 2.3namespace的正常使用 3.C输出和输入 三、结言 一、前言 点来不及悼念C语言&#xff0c;接下来出场的是新的语言C。不同于C…

【数据采集工具】Sqoop从入门到面试学习总结

国科大学习生活&#xff08;期末复习资料、课程大作业解析、大厂实习经验心得等&#xff09;: 文章专栏&#xff08;点击跳转&#xff09; 大数据开发学习文档&#xff08;分布式文件系统的实现&#xff0c;大数据生态圈学习文档等&#xff09;: 文章专栏&#xff08;点击跳转&…

unity Gpu优化

不一样的视角&#xff0c;深度解读unity性能优化。unity性能优化&#xff0c;unity内存优化&#xff0c;cpu优化&#xff0c;gpu优化&#xff0c;资源优化&#xff0c;资源包、资源去重优化&#xff0c;ugui优化。 gpu优化静态批处理静态批处理原理规则静态合批的原理静态合批的…