前言
嗨喽,大家好呀!这里是魔王呐~
环境使用:
- Python 3.8
- Pycharm
- ffmpeg
软件的使用 合成视频和音频 需要找wo 领取
模块使用:
- import requests >>> pip install requests
内置模块
你安装好python环境就可以了
- import re
- import json
- import subprocess
Python的应用学习方向有哪些?
网站开发:
如目前优秀的全栈的 django、框架flask ,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好。
python已经成为自动化运维平台领域的事实标准;
python开发的网站: 豆瓣 , Youtube , Dropbox , 豆瓣…等等
爬虫程序
在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。
从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。
数据分析
Python语言相对于其它解释性语言最大的特点是其庞大而活跃的科学计算生态,
在数据分析、交互、可视化方面有相当完善和优秀的库.
自动化脚本
执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,
使用自动化脚本就无需手动一次又一次地完成这些任务,非常方便。
人工智能
各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。
游戏开发/辅助 自动化测试 运维
基本四大步骤:
- 发送请求
- 获取数据
- 解析数据
- 保存数据
完整代码
headers里的有一个网址被我删去~可自行添加一下哦
import requests
import re
import json
import pprint
import subprocess
import os
def get_response(html_url):
"""
发送请求函数
模拟浏览器对于url地址发送请求, 获取服务器返回响应数据
请求头headers是用来伪装
user-agent: 用户代理 表示浏览器基本身份标识
:param html_url: 要请求网址是什么
:return: response 服务器返回响应数据
"""
headers = {
'referer': '',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
}
response = requests.get(url=html_url, headers=headers)
return response
def get_video_info(html_url):
"""
获取视频信息函数
def 关键字 用自定义函数 get_video_info函数名 html_url 形式参数 <不具备实际意义>
:param html_url: 传入视频播放页面url地址
:return: 视频信息
正则表达式提取数据:
re.findall() 需要给这个括号里面传两个基本参数
从什么地方去找什么样数据
re.findall('<h1 id="video-title" title="(.*?)" class="video-title">', response.text)
从response.text里面去找 <h1 id="video-title" title="(.*?)" class="video-title"> 这段数据
这段数据中 (.*?) 这段就是我们想要数据 .*?表示匹配任意字符(除了换行符\n以外)
正则表达式 全部掌握, 系统学习2.5个小时
列表 list 正则匹配出来的数据返回列表
<作为文件名数据保存, 都是要字符串数据>
[0] 取列表里第一个元素
"""
response = get_response(html_url=html_url)
title = re.findall('<h1 id="video-title" title="(.*?)" class="video-title">', response.text)[0].replace(' ', '')
html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]
json_data = json.loads(html_data)
"""
源码、解答、教程、资料加Q群:832157862
dit = {
'键1': '值1',
'键2': '值2',
}
dit['键2'] >>> '值2' jsonpath
"""
audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
video_url = json_data['data']['dash']['video'][0]['baseUrl']
video_info = [title, audio_url, video_url]
return video_info
def save(title, audio_url, video_url):
"""
保存数据函数
:param title: 视频标题
:param audio_url: 音频url
:param video_url: 视频url
:return:
"""
audio_content = get_response(html_url=audio_url).content
video_content = get_response(html_url=video_url).content
with open('video\\' + title + '.mp3', mode='wb') as f:
f.write(audio_content)
with open('video\\' + title + '.mp4', mode='wb') as f:
f.write(video_content)
print(title, '保存成功')
cmd = f"D:\\demo\\ffmpeg\\bin\\ffmpeg.exe -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
subprocess.run(cmd, shell=True)
os.remove(f'video\\{title}.mp4')
os.remove(f'video\\{title}.mp3')
def main(bv_id):
"""
主函数 整合前面所有定义好的函数
:param bv_id: 视频bv号 视频ID
:return:
"""
link = f'https://www.bilibili.com/video/{bv_id}'
video_info = get_video_info(html_url=link)
save(video_info[0], video_info[1], video_info[2])
if __name__ == '__main__':
for page in range(1, 7):
index_url = f'https://api.bilibili.com/x/space/arc/search?mid=487939159&ps=30&tid=0&pn={page}&keyword=&order=pubdate&jsonp=jsonp'
json_data = get_response(html_url=index_url).json()
bv_id_list = [i['bvid'] for i in json_data['data']['list']['vlist']]
title_list = [i['title'] for i in json_data['data']['list']['vlist']]
print(bv_id_list)
print(title_list)
尾语
成功没有快车道,幸福没有高速路。
所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持
愿所有美好如期而至,以后的生活不将就,也不辜负。
——励志语录
本文章就写完啦~感兴趣的小伙伴可以复制代码去试试
你们的支持是我最大的动力!!感谢陪伴~
记得三连哦~ 💕 欢迎大家阅读往期的文章呀
|