Python爬虫实战:使用requests和moviepy下载合并豆瓣电影预告片
import requests
from moviepy.editor import VideoFileClip, AudioFileClip
import os
if __name__ == '__main__':
url = 'https://movie.douban.com/j/chart/top_list'
param = {
'type': '24',
'interval_id': '100%3A90',
'action': '',
'start': '0',
'limit': '10',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55'
}
response = requests.get(url=url, params=param, headers=headers)
list_data = response.json()
for data in list_data:
title = data['title']
video_url = data['video_url']
audio_url = data['audio_url']
# 下载视频
video_res = requests.get(video_url, headers=headers)
with open('{}.mp4'.format(title), 'wb') as v_file:
v_file.write(video_res.content)
# 下载音频
audio_res = requests.get(audio_url, headers=headers)
with open('{}.mp3'.format(title), 'wb') as a_file:
a_file.write(audio_res.content)
# 合并视频和音频
video_clip = VideoFileClip('{}.mp4'.format(title))
audio_clip = AudioFileClip('{}.mp3'.format(title))
merge_result = video_clip.set_audio(audio_clip)
merge_result.write_videofile('merge_{}.mp4'.format(title))
# 删除临时文件
os.remove('{}.mp4'.format(title))
os.remove('{}.mp3'.format(title))
print('视频合并完成!')
代码解析:
- 导入必要库:
requests用于发送HTTP请求,moviepy.editor用于视频和音频处理,os用于文件操作。 - 设置请求参数: 包括豆瓣电影API地址,请求参数和请求头。
- 发送请求并获取数据: 使用
requests.get()方法发送GET请求,并将响应解析为JSON格式。 - 循环处理每部电影:
- 提取电影标题、视频地址和音频地址。
- 使用
requests.get()方法下载视频和音频文件。 - 使用
VideoFileClip和AudioFileClip加载视频和音频文件。 - 使用
set_audio()方法将音频添加到视频中。 - 使用
write_videofile()方法保存合并后的视频文件。 - 删除临时下载的视频和音频文件。
- 输出提示信息: 打印 '视频合并完成!'。
注意:
- 该代码仅供学习交流使用,请勿用于商业用途。
- 运行代码前请确保已安装所需库:
pip install requests moviepy
原文地址: https://www.cveoy.top/t/topic/fQWV 著作权归作者所有。请勿转载和采集!