python+request 哔哩哔哩视频下载

news/2024/7/19 9:45:03 标签: 爬虫

实现功能为输入视频av号,完成下载。

随便点击一个视频进入,打开调试器观察。

发现有一个内容较大的fetch文件

打开该网址,会发现视频自动下载到电脑中。可见,可以通过该网址完成bilibili的视频下载。

而该网址,也可在网站的html中找到:

利用正则可将其匹配出来。

r'"url":"http(.+?)","backup_url":.+?'

所以完整的py文件如下:

import requests
import re
aid = input('请输入av号:')
# 获取bilibili视频地址
url = 'https://www.bilibili.com/video/av'+aid
headers = {'Host': 'www.bilibili.com',
           'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
            'Connection': 'keep-alive',
           }
res = requests.get(url=url, headers=headers).text
# 获取视频的真正地址
vid = re.compile(r'"url":"http(.+?)","backup_url":.+?')
tittle = re.findall(r'<h1 title="(.+?)".*?>', res)[0]
vid_url = 'https'+re.findall(vid, res)[0]
print(tittle, '\n', vid_url)
vid_headers = {
    'Origin': 'https://www.bilibili.com',
    'Referer': url,
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
}
video = requests.get(url=vid_url, headers=vid_headers).content
# 视频保存在与py文件同级的video文件夹下
with open('./video/'+tittle+'.mp4', 'wb+') as f:
    f.write(video)

 运行结果如下:

视频文件已下载到本地。


http://www.niftyadmin.cn/n/1848409.html

相关文章

Ubuntu 11.04 安装后要做的20件事情

感谢笨兔兔的投递4.28日&#xff0c;Ubuntu 11.04 就发布了&#xff01;Ubuntu 11.04 安装后如何快速配置&#xff1f;笨兔兔在此给各位兔子们支招——–《Ubuntu 11.04 安装后要做的20件事情》&#xff0c;让你赶在别人之前就明白怎么做&#xff01;若是你安装Ubuntu原先的版本…

mysql,1205报错

项目运行中&#xff0c;对数据库进行update操作&#xff0c;后端报了这个错误&#xff08;1205, Lock wait timeout exceeded; try restarting transaction&#xff09;&#xff0c;发现原来是使用数据库管理工具的时候不小心点了开启事务&#xff0c;因为隔离级别是Repeatable…

路由信息错误导致ping主机请求超时问题

断电后&#xff0c;有线换了ip连不上网&#xff0c;无线换了ip ping不通主机 在尝试过各种有效范围内的ip&#xff0c;关闭防火墙&#xff0c;重启电脑&#xff0c;重启路由后&#xff0c;依然无解&#xff0c;可以ping局域网内的其他ip&#xff0c;但就是ping不通主机 route …

oracle的函数

2019独角兽企业重金招聘Python工程师标准>>> select upper(ccc) from dual;select lower(CCC) from dual;第一个字母大写select initcap(ggg) from dual;连接字符串select concat(concat(first_name, ),last_name) from employees;select first_name|| ||last_name …

Android事件分发机制以及滑动冲突处理

http://blog.csdn.net/u013038616/article/details/50733811 方便日后的查看与交流&#xff0c;将学习与实践总结如下。 一、Android事件传递分析 1、ViewGroup中事件分发机制相关的方法a、dispatchTouchEvent 事件分发器b、onInterceptTouchEvent 处理是否拦截事件c、onTou…

fs

2019独角兽企业重金招聘Python工程师标准>>> <% List<List> list (List<List>)request.getAttribute("list"); for(List li : list) { response.getWriter().write("主表&#xff1a;" li.get(0).toString() "<br>…

通俗理解Android中View的事件分发机制及滑动冲突处理

http://blog.csdn.net/yyh352091626 说起Android滑动冲突&#xff0c;是个很常见的场景&#xff0c;比如SliddingMenu与ListView的嵌套&#xff0c;要解决滑动冲突&#xff0c;不得不提及到View的事件分发机制。一、Touch事件传递规则分析首先&#xff0c;我们要知道Touch事件是…

MFC CButtonST按钮增强类使用

MFC UI设计过程中经常需要对按钮进行各种美化操作&#xff0c;使用原生的CButton类很多的效果无法达成。CButtonST类提供了丰富的操作函数能满足各种对按钮的美化要求。不知道是什么原因&#xff0c;网上现有的资源几乎都是VC6.0版本的&#xff0c;对于VS高一点的版本支持不是很…