python带你获取视频及弹幕数据~知识点满满(含完整源代码)
前言
嗨喽!大家好呀,这里是魔王~**
模块安装问题:
如果安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
- 在pycharm中点击Terminal(终端) 输入安装命令
如何配置pycharm里面的python解释器?
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
pycharm如何安装插件?
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效
如何配置 ffmpeg
一. 左侧主页加我领取相应的安装包
二. 解压文件, 放到某一个文件夹(随意)
三. 配置环境变量
我的电脑(此电脑) 右键选择属性
选择高级系统设置
选择环境变量
复制你解压之后的ffmpeg路径
比如我的 C:\01-Software-installation\ffmpeg\ffmpeg\bin
点击选择path
选择新建, 粘贴ffmpeg路径
分析得到数据
一. 打开网页源代码
对视频详情页 鼠标右键选择网页源代码
二. 搜索关键词 playinfo
代码实现步骤
代码
# import time
#
# import requests # 数据请求模块
# import re
# import json
# import pprint
# import subprocess
# import os
#
# for page in range(1, 12):
# list_url = f'https://api.bilibili.com/x/space/arc/search?mid=1305006386&ps=30&tid=0&pn={page}&keyword=&order=pubdate&jsonp=jsonp'
# headers = {# 'cookie': 'buvid3=505115A6-48EA-0919-3209-465409AA992981053infoc; _uuid=636B74D9-E84A-F2104-1229-78C910BC64F5179787infoc; blackside_state=1; rpdid=|(kmJY|k))Ru0J\'uYR|mJYlY~; buvid4=5C79A8B4-7F25-78C9-2243-297FC69BBF1379004-022021019-1pW1w45e5faCG5mZBS0QBA%3D%3D; buvid_fp_plain=undefined; LIVE_BUVID=AUTO2716444930253540; i-wanna-go-back=-1; CURRENT_QUALITY=0; CURRENT_BLACKGAP=0; sid=642j26r0; fingerprint3=1d3f8d535d23a20df3fe7382671d115b; DedeUserID=523606542; DedeUserID__ckMd5=909861ec223d26d8; SESSDATA=4480157b%2C1661674553%2Cda993*31; bili_jct=4308a518638c20ee6db87b115cbe8609; fingerprint=d1e5f057d9a8561c03c59637ef5c6253; buvid_fp=d1e5f057d9a8561c03c59637ef5c6253; b_ut=5; nostalgia_conf=-1; innersign=1; PVID=2; b_lsid=44E1073DA_18065EFA270; bp_video_offset_523606542=653426892676792300; CURRENT_FNVAL=80',
# 'referer': 'https://www.bilibili.com/',
# 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
# }
# bv_list = requests.get(url=list_url, headers=headers).json()['data']['list']['vlist']
# for index in bv_list:
# # time.sleep(1)
# bv_id = index['bvid']
# title = index['title']
# print(title, bv_id)# """# 1. 发送请求, 对于视频详情页url地址发送请求 https://www.bilibili.com/video/BV11b4y1S7Jq# 确定请求网址# 确定请求方式# 请求头伪装# 爬虫是模拟浏览器对于url地址发送请求, 然后再获取服务器返回响应数据# """# url = f'https://www.bilibili.com/video/{bv_id}'# # 请求头伪装代码, 为了防止被服务器识别出来是爬虫程序 user-agent 用户代理, 浏览器最基本身份信息# # 你得不到你想要数据, 服务器没有给你返回数据, 或者返回的数据不是你想要的# # referer 防盗链, 告诉服务器, 我们请求url地址是从哪里跳转过来的# # 通过requests这个模块里面get请求方法, 对于url地址发送请求 并且携带上headers请求头伪装, 最后用自定义变量response接收返回数据# response = requests.get(url=url, headers=headers)# # print(response) # <Response [200]> 得到响应对象 200表示请求成功# """# 2. 获取数据, 获取响应体的文本数据 response.text 网页源代码# response.json() 获取json字典数据# response.content 获取二进制数据# """# # print(response.text)# """# 3. 解析数据, 提取我们想要的 视频标题/音频url/视频画面url# 用re正则表达...# 如何简单的使用正则# 1. 导入模块# 2. 去复制, 我们想要数据内容 <h1 id="video-title" title="每天一遍,防止早恋!" class="video-title"># 3. 使用re.findall() 方法 从什么地方, 去找什么数据 (.*?) 想要的数据, 就用括号.*?# ['每天一遍,防止早恋!'] 列表 文本在python一般字符串数据# ["每天一遍,防止早恋!"] 字符串# 正则匹配出来的数据, 返回是列表# """# title = re.findall('<h1 id="video-title" title="(.*?)" class="video-title">', response.text)[0].replace(' ', '')# play_info = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]# json_data = json.loads(play_info)# # json 数据存储格式, 在python字典数据类型# # print(title)# # print(play_info)# # print(type(play_info))# # json_data = json.loads(play_info)# # print(json_data)# # print(type(json_data))# # pprint.pprint(json_data) # 格式化输出# # 取值, 键值对取值, 根据冒号左边的内容[键], 提取冒号右边的内容[值]# audio_url = json_data['data']['dash']['audio'][0]['baseUrl']# video_url = json_data['data']['dash']['video'][0]['baseUrl']# # 403 Forbidden 你没有访问权限, 403 加防盗链# print(title)# print(audio_url)# print(video_url)## audio_content = requests.get(url=audio_url, headers=headers).content # 音频二进制数据# video_content = requests.get(url=video_url, headers=headers).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)### COMMAND = f'ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4'# subprocess.run(COMMAND, shell=True)# os.remove(f'video\\{title}.mp3')# os.remove(f'video\\{title}.mp4')#
# 简单m3u8 复杂 m3u8 + AES加密 [JS逆向内容]
import re
import requestsfor page in range(1, 30):url = f'https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=138393844&date=2022-04-{page}'headers = {'cookie': 'buvid3=505115A6-48EA-0919-3209-465409AA992981053infoc; _uuid=636B74D9-E84A-F2104-1229-78C910BC64F5179787infoc; blackside_state=1; rpdid=|(kmJY|k))Ru0J\'uYR|mJYlY~; buvid4=5C79A8B4-7F25-78C9-2243-297FC69BBF1379004-022021019-1pW1w45e5faCG5mZBS0QBA%3D%3D; buvid_fp_plain=undefined; LIVE_BUVID=AUTO2716444930253540; i-wanna-go-back=-1; CURRENT_QUALITY=0; CURRENT_BLACKGAP=0; sid=642j26r0; fingerprint3=1d3f8d535d23a20df3fe7382671d115b; DedeUserID=523606542; DedeUserID__ckMd5=909861ec223d26d8; SESSDATA=4480157b%2C1661674553%2Cda993*31; bili_jct=4308a518638c20ee6db87b115cbe8609; fingerprint=d1e5f057d9a8561c03c59637ef5c6253; buvid_fp=d1e5f057d9a8561c03c59637ef5c6253; b_ut=5; nostalgia_conf=-1; innersign=1; PVID=2; b_lsid=44E1073DA_18065EFA270; bp_video_offset_523606542=653426892676792300; CURRENT_FNVAL=80','referer': 'https://www.bilibili.com/','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'}response = requests.get(url=url, headers=headers)# print(response.text)content_list = re.findall(':(.*?)@', response.text)for content in content_list:print(content[1:])with open('弹幕.txt', mode='a', encoding='utf-8') as f:f.write(content[1:])f.write('\n')
尾语
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
python带你获取视频及弹幕数据~知识点满满(含完整源代码)相关推荐
- 不破不立~EDG夺冠,用Python分析词云图展示粉丝弹幕数据,来感受粉丝的热情吧
大家好~我是恰恰,好久不见啦~Python的乐趣就在于在互联网时代,能实现很多人工做不到的事~ 虽然我不是经常玩游戏,但是我这该死的爱国情怀,在EDG夺冠的时候,我也是十分激动的! 北京时间11 ...
- Python爬取图片、视频以及将数据写入excel的方法小摘要
Python爬取图片.视频以及将数据写入excel的方法小摘要 1.爬取图片 2.爬取视频 3.将获取的数据存入excel 4.备注 1.爬取图片 import requests #导入request ...
- opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用
opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...
- python,ffprobe获取视频信息
背景 需要获取视频基础信息,如果分辨率.大小.播放时长等,研究发现ffprobe工具已经提供了非常全面的视频信息,用ffprobe分析视频很简单,且看我是怎么在python码中调用ffprobe来提取 ...
- 【随记】Python:前端表格获取到的填写数据插入到数据库表格中数据类型问题
Python:前端表格获取到的填写数据插入到数据库表格中数据类型问题 背景 问题再现 结论 背景 用户在前端界面的表格中填写数据,通过 text() 获取到的数据插入到数据库表中,该过程涉及到了数据类 ...
- Python批量采集亚马逊商品数据 (含完整源代码)
前言 嗨喽 ! 大家好吖,这里是魔王~ 亚马逊公司,是美国最大的一家网络电子商务公司,位于华盛顿州的西雅图 是网络上最早开始经营电子商务的公司之一,亚马逊成立于1994年 今天教大家用Python批量 ...
- 用Python爬取最新股票数据含完整源代码
用Python爬取最新股票数据含完整源代码 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 ...
- 【Python】爬虫获取微博热搜数据,response中文显示“\u7814\u7a76\u8bc1\u5b9e\u”
问题描述 在爬虫获取微博热搜数据的时候,response中文出现了不便于理解的字段,截取如下: ......[{"title_sub":"\u7814\u7a76\u8b ...
- Python采集ppt素材模板 (多线程版本),答辩、演讲再也不怕没有好用的PPT模板了(含完整源代码)
本次目的: Python采集ppt素材模板 (多线程版本) 开发环境: Python 3.8 Pycharm 模块使用: requests >>> pip install reque ...
最新文章
- GridView复合多层表头(不限级)!!! (转)
- [C#基础知识系列]专题十二:迭代器
- [YTU]_2633( P3 数钱是件愉快的事)
- 产品经理必备知识之网页设计系列(一)-创建出色用户体验
- 实战:Python 轻松实现自动化谷歌翻译!
- Linux结构体变量报错,23. Linux模式设计
- Android设置Alpha值实现图片渐变效果
- 2750个通用停用词表整理,免费下载
- ArcGIS10.1之crossdomain文件
- 【java学习之路】(java SE篇)(练习)3个经典小问题
- Python内置函数(56)——set
- 软件开发全过程必备文档下载(@附所有文档)
- 华为 U2000 网管系统 批量添加全网OLT设备TELNET账号
- 基于PT100铂电阻的高精度测温方法
- SONY笔记本电脑SVS131100C系统重装后Fn键功能问题
- 为什么说继承是把双刃剑
- 刚看到的消息,MD5居然被破解了~~~
- iphone.android下载,如何在iPhone和Android上删除下载
- Java POI SXSSFWorkbook 读取模板,输出
- Compose学习笔记1-compose、state、flow、remember
热门文章
- Community Day - Let's re:Invent re:Invent 技术创新盘点
- 2008 r2服务器日志文件,Windows2008R2共享文件访问日志查询的设置方法
- JavaWeb视频教程
- WWDG 窗口看门狗 知识详解
- Linux学习笔记(二) -- Linux学习笔记(二) – 解决VMware主窗口中的虚拟机窗口太小的方法
- 我的Android开发半年工作经验总结
- debian下切换内核
- Mac 截取一个视频中部分片段(命令行方法)
- linux中查看系统进程的四种方法
- Phonics 自然拼读法 ou ow oi oy au aw oo oo ea Teacher:Lamb