Python 爬虫之下载视频(四)

爬取某投币视频平台的小视频


文章目录


前言

这篇用来记录一下如何爬取这个平台的视频,比如一些Python的教程小视频(一个视频四五分钟的那种的),效果还是不错的。

举例,如下图所示:


一、基本内容

打开一个正在播放的网页页面,获取视频标题和下载链接,在本地保存成mp4格式的视频文件。


二、基本思路

  1. 获取视频下载链接,电脑网页检查元素定位到的是blob转换的url地址(用不了),视频标题不影响。
  2. 需要电脑网页开启手机模式(开发者模式里可以设置),这里的定位到的url是可以用的。
  3. 以上可得,在爬取的时候,需要程序代码以手机模式进行爬取(跟之前的教程一样,只不过是多个一个这个步骤)。
  4. 像之前的教程一样,去爬取下载就可以。

三、代码编写

1.引入库

代码如下:

python 复制代码
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

2.设置手机模式

代码如下:

python 复制代码
# 打开电脑浏览器,以手机模式运行
chrome_options = webdriver.ChromeOptions()

# 模拟一种存在的手机设备类型
chrome_options.add_experimental_option(
    "mobileEmulation",
    {'deviceName': 'iPhone XR'})

# 创建一个实例对象,添加配置项
driver = webdriver.Chrome(options=chrome_options)

# 在执行任何查找元素的操作时等待时间
driver.implicitly_wait(5)

# 要爬取的网页地址
driver.get("网页地址")
time.sleep(5)

这里主要讲了两个点:一是将网页模式设置成了 iPhone XR 手机模式;二是在执行任何查网页找元素的操作时等待时间,为了给网页反应的时间。然后输入网页地址。


3.跳过手动点击等操作

代码如下:

python 复制代码
# 页面打开点击播放按钮
play_icon = driver.find_element(by=By.CSS_SELECTOR, value='.main-cover')
play_icon.click()

# 等窗口弹出来
time.sleep(3)

# 点击继续网页播放
to_see = driver.find_element(by=By.CSS_SELECTOR, value='.to-see')
to_see.click()
time.sleep(3)

大家都懂得,厂商都想让你跳转到app 看,但是也有不显眼的在网页继续观看,上面的代码就是解决这个问题的。


4.获取视频下载地址

代码如下:

python 复制代码
# 视频下载地址
# 定位到包含 video 标签的 div 元素
movie_div = driver.find_element(by=By.CSS_SELECTOR, value='.mplayer-video-wrap')

# 在 div 元素中查找 video 标签
video_element = movie_div.find_element(By.TAG_NAME, "video")

# 获取 video 标签的 src 属性值
movie_url = video_element.get_attribute("src")

# 打印下载地址
print(movie_url)

这是获取下载地址的一个嵌套逻辑,要想理解需要大家去实际操作一下。


5.获取视频标题

代码如下:

python 复制代码
## 视频标题
movie_title = driver.find_element(by=By.CSS_SELECTOR, value='.part-item.on').text.strip()

# 打印视频标题
print(movie_url)

标题的获取到时不难,就两行代码。

或者去这个东西主要是为了给下载的视频起名字,对号入座,好区分。


6.下载保存

代码如下:

python 复制代码
# 视频头部信息,做验证用
headers = {
    'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1',
}

# 获取到视频
response = requests.get(movie_url, headers=headers)
chunk_size = 1024 * 1024 * 2

# 开始下载保存文件
with open(f'{movie_title}.mp4', 'wb') as f:
    for chunk in response.iter_content(chunk_size=chunk_size):
        f.write(chunk)
        
# 打印下载完成的消息
print(f'下载完了!!{movie_title}.mp4')

总共四部分:

  1. 验证头部信息(相当于获取下载视频的权限)。
  2. 获取到视频的信息。
  3. 开始下载保存文件。
  4. 打印下载完成的消息。

总结

到这里,主要部分就大功告成了。图片中的动态进度条没加进来,太多了大家看着也烦,主要的东西告诉大家就OK了。

需要的请点击《Python 小程序之动态进度条》的链接:https://only-me.blog.csdn.net/article/details/134937611

相关推荐
EasyCVR几秒前
基于视频融合平台EasyCVR的变电站智慧消防远程监控系统设计与实现
音视频
智算菩萨4 分钟前
FFMpeg全解析:从“万能媒体转换器”到工程化音视频管线的底层逻辑
ffmpeg·音视频·媒体
一招定胜负4 分钟前
模板匹配与银行卡号识别(预告)
python·opencv·计算机视觉
小咖自动剪辑6 分钟前
视频转图片教程逐帧提取格式转换与视频图片剪辑全攻略
音视频
七夜zippoe8 分钟前
实时数据处理:Kafka与Python构建高可靠流处理系统
分布式·python·kafka·集群·流处理·exactly-once
ai_top_trends9 分钟前
2026 年 AI 生成 PPT 工具推荐清单:测评后给出的答案
人工智能·python·powerpoint
a程序小傲10 分钟前
中国邮政Java面试被问:Kafka的Log Compaction实现和删除策略
java·开发语言·后端·python·面试·职场和发展·kafka
感觉不怎么会10 分钟前
Android 4.4 - APN类型扩展(一)
android·开发语言·python
_OP_CHEN14 分钟前
【测试理论与实践】(十)Web 项目自动化测试实战:从 0 到 1 搭建博客系统 UI 自动化框架
运维·自动化测试·python·测试开发·selenium·自动化·测试开发工程师
pulinzt18 分钟前
【python】第四节引入模版+文件的读取
开发语言·python