前面已经分析了b站得视频下载所用到得数据

这篇主要是说下载相关得操作。

这里是用得是开源下载工具aria2

之所以用这个下载工具来下载之因为 这个工具可以跟任何语言进行交互实现下载

一.下载aria2

下载地址:https://github.com/aria2/aria2/releases

二.开启rpc服务

这里语言和aria2交互主要是通过aria2开启rpc服务来实现的

官方参考文档:https://aria2.github.io/manual/en/html/aria2c.html#rpc-interface

三.配置aria2

在开启rpc服务前先配置一下 方便以后使用

首先新建一个aria2.conf文件 复制下面所有的  (这里很多也是网上复制的,)

## 全局设置 ## ============================================================# 日志
#log-level=warn#log=/PATH/.aria2/aria2.log# 后台运行
daemon=true# 下载位置, 默认: 当前启动位置
dir=./Downloads# 从会话文件中读取下载任务
input-file=./aria2.session# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=./aria2.session# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=30# 断点续传
continue=true# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M#bt-tracker=udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.pirateparty.gr:6969/announce,udp://tracker.cuntflaps.me:6969/announce# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none# 客户端伪装
user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36# 禁用IPv6, 默认:false
#disable-ipv6=true# 其他
always-resume=true
check-integrity=true## 下载位置 ## ============================================================
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=12# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M# 单个任务最大线程数, 添加时可指定, 默认:5
split=5# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0# 单个任务下载速度限制, 默认:0
#max-download-limit=0# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0# 单个任务上传速度限制, 默认:0
#max-upload-limit=0## RPC设置 ## ============================================================
# 启用RPC, 默认:false
enable-rpc=true# 允许所有来源, 默认:false
rpc-allow-origin-all=true# 允许非外部访问, 默认:false
rpc-listen-all=true# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=<TOKEN># 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key## BT/PT下载相关 ## ============================================================
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413# 单个种子最大连接数, 默认:55
#bt-max-peers=55# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999dht-file-path=/opt/var/aria2/dht.dat
dht-file-path6=/opt/var/aria2/dht6.dat# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K# 设置 peer id 前缀
peer-id-prefix=-TR2770-# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false# BT校验相关, 默认:true
#bt-hash-check-seed=true# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
bt-max-open-files=16

因为在上面的配置文件中有设置aria2.session文件,所以最好在同级目录下创建一个文件命名为aria2.session

四.启动aria2 的rpc服务

命令行的方式下进入aria的目录

aria2c.exe --conf-path=./aria2.conf

这样就算开启成功了 可以看到 他有一个警告 这里无视即可 本来我们就是本机使用 啥账号密码 对于我们来说 无意义 反而还多了一些不必要的步骤 可以无视

然后可以看到aria是监听在6800端口下

五.测试rpc是否可用

查看文档可知 只要往6800/jsonrpc下发送消息 就可以实现下载

这里可以看出来 其实rpc使用的就是http post发送数据包 所以我们直接使用python的request的post方式进行发包即可

这里两个窗口 下面的是ipython的 上面的是aria2的rpc服务窗口

当我们执行post的时候 上面的窗口接收到就会开始下载 ,因为我这个视频太小了下的比较快这里是已经完成了的

jsonrpc中的下载基本就是这么使用的 需要注意的是referer 没有这个参数可能会下载不下来

dir是保存的路径

params中第一个是视频的地址

基本要注意的就这些

总结:

上面只是说了一个method方法的使用 也是最主要的下载的实现 ,如果集成到自己的软件里的花,还需要其他的method参数 例如 当前下载量 总下载量等等 需要其他相关配置请参考官方文档。

python爬虫实战之b站视频下载-中相关推荐

  1. 曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)

    曝肝三天,两千行Python代码,制作B站视频下载工具(附源码) 文章目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_vide ...

  2. Python爬虫实战视频教程-李宁-专题视频课程

    Python爬虫实战视频教程-719人已学习 课程介绍         本课程使用Python3作为编程语言,主要内容包括Python爬虫的基本原理,编写简单的爬虫,使用爬虫从百度下载比基尼美女图片. ...

  3. Python爬虫实战(十一) B站热门信息爬取(窗口版)| Tkinter实现GUI交互式界面

    目录 一.主页面设计 1.1 Tkinter基本介绍 1.2 设计布局 二.查询功能实现 2.1 分区字典构建 2.2 输入日期处理 2.3 书写爬虫函数 三.全部代码 更多信息查询(2021-2-1 ...

  4. Python爬虫入门教程 71-100 续上篇,python爬虫爬取B站视频

    写在前面 上篇博客我们用比较大的篇幅分析了B站视频传输方式,这篇博客填一下之前留下的坑,我们把代码部分写出来. 文章来源:梦想橡皮擦,其实这个ID是一个组合 分析的步骤与逻辑这里不再重复给大家演示了, ...

  5. python爬虫实战练习 --- 喜马拉雅免费音频 下载到本地

    一.分析网站结构,寻找音频实际下载地址 随便找个免费听的音频列表:https://www.ximalaya.com/youshengshu/12576446/ 可以看到结构很明显,a标签里的title ...

  6. python爬虫实战-爬取新闻联播视频和新闻文稿

    一.爬取新闻联播视频 1. 将视频拖到最后 2. 分析视频缓存链接 如图所示url:https://hls.cntv.baishancdnx.cn/asp/hls/1200/0303000a/3/de ...

  7. 牛逼了!100份Python爬虫实战源码+视频,开放获取

    这是之前总结的一些Python爬虫实战源码和视频,另外还总结了一些Python学习的知识手册,从Python基础.到web开发.数据分析.机器学习.深度学习.金融量化统统都有,该手册是HTML版本,左 ...

  8. python爬虫之b站视频下载(python学习笔记)

    b站视频爬取(python学习笔记) 亲爱的b站自从在2020年3月23日将av号改为BV号后,之前的很多爬虫已经不能用了,暂时没看懂这操作的意义何在,反而一大串大小写英文字母加数字的BV号让人很难记 ...

  9. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

最新文章

  1. java 容器的嵌套_java界面设计里怎么实现容器嵌套
  2. tip use view.isineditmode() in your custom views to skip code when shown in eclipse
  3. 05构建之法阅读笔记之三
  4. mysql5.1 mysiam_MySQL 数据库清理MyISAM Innodb表(支持MySQL5.1.6以上的版本)
  5. JavaScript高级程序设计学习(六)之设计模式
  6. 线段 LibreOJ - 10007(贪心)
  7. excel转las文件_这3种Word、Excel格式不变的互转方法,实在太好用了
  8. linux df命令无反馈,Linux-df命令
  9. textarea怎么占满整个td_保健品为什么偏偏盯上老人?作为子女,应怎么面对老人狂买保健品...
  10. Another test
  11. php is_subclass_of,PHP_PHP is_subclass_of函数的一个BUG和解决方法,is_subclass_of的作用: 复制代码 - phpStudy...
  12. NO.47 确定项目要完成的需求列表
  13. 苹果自带输入法怎么换行_小屏幕手机的福音:分享自用输入法皮肤丨免费
  14. 宏观经济模型代码来源 :MMB库
  15. android shell强制删除文件夹_Windows 强制删除文件及文件夹命令
  16. u盘第一扇区 分区表_硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解...
  17. 我的世界服务器无限血,我的世界生物血量无限指令 | 手游网游页游攻略大全
  18. 在AD17中如何自定义板子大小
  19. QML delegate中使用Repeater
  20. “数字聚变 驱动智造” 网络研讨会期待您的参与

热门文章

  1. 【二】2D测量 Metrology——get_metrology_object_result()算子
  2. 手机强制移除ppt密码,忘记ppt密码怎么办?
  3. 让我们一起祈祷,祝愿祖国平平安安
  4. 网络靶场实战-记一次大型内网渗透实践 【完结篇】
  5. FloTHERM 12.0热管铝挤CPU风冷实例仿真分析视频教程
  6. 【Kubernetes 系列】ConfigMap 进阶 环境变量的配置及使用
  7. 联想万全t260磁盘阵列_联想万全T168服务器板载Sata raid系统设置图解
  8. Python爬虫实战(2):百度贴吧帖子
  9. 笔录软件在linux系统,linux下f但tp服务器架设笔录.doc
  10. 分数化成有限小数的方法_判断分数能否化成有限小数的方法.ppt