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

news2024/12/23 5:11:25

今日主题

如何用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%免费,可在下方获取!

 ​​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-类与对象

一、面向对象 在了解类与对象前,我们需要先知道"面向对象"这个词的概念: 在Java语言中,我们的主要思想就是"面向对象",而在之前我们所学习的C语言中大部分时候的思想是"面向过程"。 那么什么是&…

MySQL-10.DML-添加数据insert

一.DML(INSERT) -- DDL:数据操作语言 -- DML:插入数据 - insert -- 1.为tb_emp表的username,name,gender字段插入值 insert into tb_emp (username,name,gender) values (wuji,无忌,1); -- 这样会报错,因为create_ti…

DS堆的实际应用(10)

文章目录 前言一、堆排序建堆排序 二、TopK问题原理实战创建一个有一万个数的文件读取文件并将前k个数据创建小堆用剩余的N-K个元素依次与堆顶元素来比较将前k个数据打印出来并关闭文件 测试 三、堆的相关习题总结 前言 学完了堆这个数据结构的概念和特性后,我们来看…

限时设计ui

ctrl-------放大缩小 空格-----画面移动 alt------复制 页面<画板<图层 添加交互事件 原型 点击蓝色的圆&#xff0c;从1跳转到2 点击绿色的圆&#xff0c;从2跳转到1

基于SSM+Vue+MySQL的健身房管理系统

系统展示 系统背景 随着人们生活水平的提高和健康意识的增强&#xff0c;越来越多的人选择去健身房锻炼。传统的健身房管理方式往往依赖于纸质记录和人工操作&#xff0c;这种方式不仅效率低下&#xff0c;而且容易出错。为了提高健身房的管理效率和服务质量&#xff0c;开发一…

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

图文检索综述(2):Deep Multimodal Data Fusion

Deep Multimodal Data Fusion 摘要1 引言2 基于编码器-解码器融合2.1 数据级别融合2.2 分层特征融合2.3 决策级别融合 3 基于注意力融合3.1 模态内的自注意力3.2 模态间的交叉注意力3.3 基于transformer的方法 4 基于图神经网络融合4.1 单个模态的表示学习4.2 融合数据的表示学…

【数据结构】宜宾大学-计院-实验三

线性表的应用——实现两多项式的相加 课前准备&#xff1a;实验学时&#xff1a;2实验目的&#xff1a;实验内容&#xff1a;实验结果&#xff1a;实验报告:&#xff08;及时撰写实验报告&#xff09;实验测试结果&#xff1a;代码实现&#xff1a;&#xff08;C/C&#xff09;…

Java 小游戏《超级马里奥》

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

华为 HCIP-Datacom H12-821 题库 (38)

&#x1f423;博客最下方微信公众号回复题库,领取题库和教学资源 &#x1f424;诚挚欢迎IT交流有兴趣的公众号回复交流群 &#x1f998;公众号会持续更新网络小知识&#x1f63c; 1.请对 2001:0DB8:0000:C030:0000:0000:09A0:CDEF 地址进行压缩。&#xff08; &#xff09;&…

阻塞I/O与非阻塞I/O

目录 一、基本概念 二、阻塞I/O的实现机制 —— 等待队列 一、基本概念 阻塞&#xff1a;在执行单元进行操作时&#xff0c;如果不能获得申请的资源&#xff0c;则执行单元挂起直至资源可用后再进行操作。 非阻塞&#xff1a;在执行单元进行操作时&#xff0c;如果不能获得申…

UDP反射放大攻击防范手册

UDP反射放大攻击是一种极具破坏力的恶意攻击手段。 一、UDP反射放大攻击的原理 UDP反射放大攻击主要利用了UDP协议的特性。攻击者会向互联网上大量的开放UDP服务的服务器发送伪造的请求数据包。这些请求数据包的源IP地址被篡改为目标受害者的IP地址。当服务器收到这些请求后&…

爬虫实战(黑马论坛)

1.定位爬取位置内容&#xff1a; # -*- coding: utf-8 -*- import requests import time import re# 请求的 URL 和头信息 url https://bbs.itheima.com/forum-425-1.html headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like…

DBSwitch和Seatunel

一、DBSwitch 什么是DBSwitch?它主要用在什么场景&#xff1f; 通过步骤分析可以看到这个是通过配置数据源&#xff0c;采用一次性或定时方案&#xff0c;同步到数据仓库的指定表&#xff0c;并且指定映射关系的工具。有点类似于flinkcdc的增量同步。 参考&#xff1a; dbs…

【实战案例】SpringBoot项目中异常处理通用解决方案

项目中经常会出现一些异常&#xff0c;比如在新增项目的时候必要的字段没有填写。在springboot项目中&#xff0c;遇到异常会往上抛出给调用方&#xff0c;DAO层遇到异常抛给Service层&#xff0c;Service层遇到异常抛给Controller层&#xff0c;Controller层遇到异常就抛给了S…

Qt-系统网络HTTP客户端(66)

目录 描述 相关函数 使用 准备工作 处理响应 测试 代码 补充 描述 进⾏ Qt 开发时, 和服务器之间的通信很多时候也会⽤到 HTTP 协议 Qt 中提供了客户端&#xff0c;但是并没有提供相应的服务器的库&#xff0c;所以这里我们只讨论 客户端 • 通过 HTTP 从服务器获取…

Unity 2d UI 实时跟随场景3d物体

2d UI 实时跟随场景3d物体位置&#xff0c;显示 3d 物体头顶信息&#xff0c;看起来像是场景中的3dUI&#xff0c;实质是2d UIusing System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using UnityEngine.UI; /// <summary>…

RequestBody接收参数报错com.fasterxml.jackson.databind.exc.MismatchedInputException

目录&#xff1a; 1、错误现象2、解决办法3、最终验证 1、错误现象 报错的现象和代码如下&#xff1a; 2、解决办法 查了很多都说参数类型对不上&#xff0c;但是明明是对上的&#xff0c;没有问题&#xff0c;最后只有换接收方式后验证是可以的&#xff1b;最终想了一下&…

Flink状态一致性保证

前言 一个Flink作业由一系列算子构成&#xff0c;每个算子可以有多个并行实例&#xff0c;这些实例被称为 subTask&#xff0c;每个subTask运行在不同的进程或物理机上&#xff0c;以实现作业的并行处理。在这个复杂的分布式场景中&#xff0c;任何一个节点故障都有可能导致 F…

智能算力中心万卡GPU集群架构深度解析

智能算力中心万卡GPU集群架构深度分析 自ChatGPT发布&#xff0c;科技界大模型竞赛如火如荼。数据成新生产要素&#xff0c;算力成新基础能源&#xff0c;大模型成新生产工具&#xff0c;“AI”转型势不可挡。模型参数量突破万亿&#xff0c;对算力需求升级&#xff0c;超万卡…