【Python爬虫】教你追剧看电影不求人!python爬虫代码教你爬取各平台视频,小白也能学会!附源码

news2024/11/25 23:15:19

看剧看一半不是VIP就是svip,正当我们看的津津有味的时候,让你冲米弹窗出来了!!!


对于大家来说,想看续集,都是全凭实力刷续集。

如果这时候你会Python的话,那就不会有这些烦恼了,只需20行代码,分分钟看全集!


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

准备工作

环境使用
Python 3.10 (不一定3.10,只要不是Python2就行)
Pycharm

模块使用
requests >>> pip install requests

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

可在下方获取
在这里插入图片描述

案例实现的基本流程

一、数据来源分析

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/2063408.html

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

相关文章

安卓开发中的Jetpack Compose

本文内容总结自郭神的jetpack compose专栏 ,整理自学,未完持续... 一、了解Jetpack Compose Compose是一个由Google Android团队官方推出的声明式UI框架,Compose也是属于AndroidX的一部分,它的本质就是用来编写界面以及处理与用户…

【数据结构】二叉树的深度理解

🍬个人主页:Yanni.— 🌈数据结构:Data Structure.​​​​​​ 🎂C语言笔记:C Language Notes 前言 在之前学习了二叉树的基本概念,但二叉树有着更深入知识理解,这篇文章可以帮助大…

Java语言程序设计——篇十六

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

ROBOT--空心杯电机是什么

空心杯电机是什么 1. 简介2. 结构3. 主要特点4. 应用场合5. 优点6. 缺点 1. 简介 空心杯电机是一种微型伺服直流电机,由定子和转子两大核心部分组成,通常来讲尺寸一般较小通常不超过40mm。在结构上突破了传统直流电机的结构形式,采用的是无铁…

如何理解递归

在二叉树的题目中,我们难免会用到递归方法,递归思想很简单,但运用起来却因为抽象而难以理解。 理解递归的关键在于认识到它是一种解决问题的方法,允许函数直接或间接地调用自身。以下是对递归的概述以及如何理解它的几个要点&…

【算法】一文带你搞懂完全背包!(附背包问题总结)

理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。这就是完全背包问题。 完全背包…

【计算机组成原理】三、存储系统:1.存储器的分类、层次化结构、性能指标、基本组成(半导体、存储芯片基本原理)

三、存储系统(存储器层次结构) 文章目录 三、存储系统(存储器层次结构)1.存储器的分类1.1按在计算机中的作用(层次)❗多级存储结构(层次化结构)1.2按存储介质1.3按存取方式1.4按信息…

uniapp 小程序 设置按钮固定到页面的最下方

解决方案 我们在做小程序的时候,特别是页面是以列表的形式进行展示,并且页面必须还要新增数据时,这是就会在页面的底部加一个固定的新增按钮,点击新增按钮,弹出一个弹窗…然后进行下一步的业务逻辑操作,那…

Answer use of function tool by OpenAI assistant in Python

题意:“在 Python 中使用 OpenAI 助手的函数工具的用途” 问题背景: I am trying to answer to OpenAI assistants function tool. “我正在尝试回答 OpenAI 助手的函数工具。” See my code below. The custom function is called "funnyfunc&qu…

系统编程 网络 基于tcp协议

tcp的客户端: socket();用来开链接的端口 bind();绑定作用(在客户端可选可不选) connect();链接作用 tcp的服务端: s…

性能测试全解

世界上没有陌生人,只有还没认识的朋友 一.性能测试的意义 由于软件系统的性能问题而引起严重后果的事件比比皆是,下面列举几个案例 (1)2007年10月,北京奥组委实行2008年奥运会门票预售,一时间订票官网访问量激致系统…

「知识篇」UWB精确测距与定位技术优势的详细探讨

UWB650模块是思为无线新发布的一款双边双向测距,三点平面定位模块,WB650模块是在UWB3000F27基础上研发,并搭载单片机,用户无需配置可直接使用。 遵循IEEE 802.15.4-2020标准的UWB技术及其通信协议,提供高精度、低功耗…

第12章 网络 (1)

目录 12.1 互联的计算机 12.2 ISO/OSI 和TCP/IP 参考模型 12.3 通过套接字通信 12.3.1 创建套接字 12.3.2 使用套接字 12.3.3 UDP套接字 12.4 网络实现的分层模型 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 网络相关的头文件数目巨大&…

两台电脑之间记事本内容如何转移?

记事本是我们日常生活中不可或缺的工具,它轻便、简单,方便我们随时记录生活中的点滴、工作中的灵感或重要的事务。比如,在会议中快速记下关键点,或者在阅读时捕捉一闪而过的想法。然而,随着数字化生活的推进&#xff0…

重塑“我店”平台:绿色积分引领的数字消费新纪元

在数字化转型的洪流中,“我店”平台凭借其创新的绿色积分体系异军突起,成为市场中的璀璨新星。本文将深度剖析“我店”的运营模式、市场效应及其如何通过绿色积分机制开创消费新潮流。 一、崛起之路与市场震撼力 自2021年盛夏在上海启航以来&#xff0c…

研讨会邀请函-Parasoft TÜV Rheinland|SOA架构下符合功能安全要求的软件自动化测试解决方案

尊敬的技术先锋, 在汽车行业的数字化转型浪潮中,软件安全已成为我们共同关注的焦点。Parasoft 联合 TV Rheinland,荣幸地邀请您参与我们即将举办的专业研讨会,与行业领袖一同探索SOA架构下的功能安全软件开发测试方案。 会议议程…

支付宝小程序websocket长连接(心跳版本)

注意点: 关闭连接一定要把那些开下来的监听全部关闭掉 1.开启连接 /*长连接*/ connectWebSocket() {let that this;my.connectSocket({url: ws://192.xx.8.xx:7780/charger-service-netty/websocket/${uni.getStorageSync(chargePointId)},header: {AccessType: a…

三种相机模型总结(针孔、鱼眼、全景)

相机标定 文章目录 相机标定前言 前言 我们最常见的投影模型Perspective Projection Model描述的就是针孔相机的成像原理。从上面的图根据相似三角形可以得出 参考链接 https://zhuanlan.zhihu.com/p/540969207 相机标定之张正友标定法数学原理详解(含python源码&a…

楼宇智慧公厕系统实时卫生状况一目了然

在科技飞速发展的今日,楼宇智慧公厕系统如一颗璀璨的新星,悄然改变着我们的生活。它以先进的技术手段,让公厕的实时卫生状况一目了然,为人们带来了全新的如厕体验。 当我们步入一栋现代化的楼宇,对公厕的期待不再仅仅是…

JVM 内存结构了解吗,每个区域都存放什么数据?

Java 程序是运行在 JVM 之中的,所有对象的创建和分配都在 JVM 中。 内存结构: 方法区:各线程共享,主要存放类信息、常量、静态变量 虚拟机栈:线程私有,主要存放基本数据类型(int、char、float……