众所周知,B 站是神器的网站

「里面的人,个个都是人才,说话又好听,超喜欢那里的。」

B 站里有很多宝藏 UP 主,视频质量非常高。

有时候我们想要下载一个视频,但是没有弹幕的 B 站视频是没有灵魂的,弹幕当然也不能少。

所以我就把B站的视频和弹幕一起爬取下载了

完整代码展示:

# -*-coding:utf-8 -*-
import requests
import json
import re
import json
import math
import xml2ass
import time
from contextlib import closingfrom bs4 import BeautifulSoupimport os
from win32com.client import Dispatchdef addTasktoXunlei(down_url):flag = Falseo = Dispatch('ThunderAgent.Agent64.1')try:o.AddTask(down_url, "", "", "", "", -1, 0, 5)o.CommitTasks()flag = Trueexcept Exception:print(Exception.message)print(" AddTask is fail!")return flagdef get_download_url(arcurl):jiexi_url = 'xxx'payload = {'url': arcurl}jiexi_req = requests.get(jiexi_url, params=payload)jiexi_bf = BeautifulSoup(jiexi_req.text)jiexi_dn_url = jiexi_bf.iframe.get('src')dn_req = requests.get(jiexi_dn_url)dn_bf = BeautifulSoup(dn_req.text)video_script = dn_bf.find('script',src = None)DPlayer = str(video_script.string)download_url = re.findall('\'(http[s]?:(?:[a-zA-Z]|[0-9]|[$-_@.&~+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)\'', DPlayer)[0]download_url = download_url.replace('\\', '')return download_urlspace_url = 'https://space.bilibili.com/280793434'
search_url = 'https://api.bilibili.com/x/space/arc/search'
mid = space_url.split('/')[-1]
sess = requests.Session()
search_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36','Accept-Language': 'zh-CN,zh;q=0.9','Accept-Encoding': 'gzip, deflate, br','Accept': 'application/json, text/plain, */*'}# 获取视频个数
ps = 1
pn = 1
search_params = {'mid': mid,'ps': ps,'tid': 0,'pn': pn}
req = sess.get(url=search_url, headers=search_headers, params=search_params, verify=False)
info = json.loads(req.text)
video_count = info['data']['page']['count']ps = 10
page = math.ceil(video_count/ps)
videos_list = []
for pn in range(1, page+1):search_params = {'mid': mid,'ps': ps,'tid': 0,'pn': pn}req = sess.get(url=search_url, headers=search_headers, params=search_params, verify=False)info = json.loads(req.text)vlist = info['data']['list']['vlist']for video in vlist:title = video['title']bvid = video['bvid']vurl = 'https://www.bilibili.com/video/' + bvidvideos_list.append([title, vurl])
print('共 %d 个视频' % len(videos_list))
all_video = {}
# 下载前 10 个视频
for video in videos_list[:10]:download_url = get_download_url(video[1])print(video[0] + ':' + download_url)# 记录视频名字xunlei_video_name = download_url.split('?')[0].split('/')[-1]filename = video[0]for c in u'´☆❤◦\/:*?"<>| ':filename = filename.replace(c, '')save_video_name = filename + '.mp4'all_video[xunlei_video_name] = save_video_nameaddTasktoXunlei(download_url)# 弹幕下载danmu_name = filename + '.xml'danmu_ass = filename + '.ass'oid = download_url.split('/')[6]danmu_url = 'https://api.bilibili.com/x/v1/dm/list.so?oid={}'.format(oid)danmu_header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36','Accept': '*/*','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9'}with closing(sess.get(danmu_url, headers=danmu_header, stream=True, verify=False)) as response:  if response.status_code == 200:with open(danmu_name, 'wb') as file:for data in response.iter_content():file.write(data)file.flush()else:print('链接异常')time.sleep(0.5)xml2ass.Danmaku2ASS(danmu_name, danmu_ass, 1280, 720)
# 视频重命名
for key, item in all_video.items():while key not in os.listdir('./'):time.sleep(1)os.rename(key, item)

技术交流群这里
今天是持续写作的第 2天。可以点赞、评论、收藏啦。

一如既往地送你们东西,干货主要有:① 2000多本Python电子书(主流和经典的书籍都有)② Python标准库资料(最全中文版)③ 项目源码(四五十个有趣且经典的练手项目及王者源码)④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)⑤  Python学习路线图(告别不入流的学习)

如果你用得到的话可以直接拿走,在我的QQ技术交流群里(广告进来立马封号,不要惹老程序员)可以自助拿走

我把B站番剧的视频和弹幕一起下载下来了……相关推荐

  1. 教你快速爬取哔哩哔哩整部番剧的视频弹幕

    快速爬取哔哩哔哩整部番剧的视频弹幕 使用工具:ibili 下载方式: npm i ibili 为了进行测试,现在我打算爬取 刀剑神域 Alicization 的整部番剧的视频弹幕 首先为了获取整部番剧 ...

  2. 使用Scrapy框架,爬取b站番剧信息。

    使用Scrapy框架,爬取b站番剧信息. 感觉好久没写爬虫的,今天看了在b站浏览了一会儿,发现b站有很多东西可以爬取的,比如首页的排行榜,番剧感觉很容易找到数据来源的,所以就拿主页的番剧来练练手的. ...

  3. 突破B站番剧港澳台地区限制

    突破B站番剧港澳台地区限制 软件名称:Google空间 教程开始 首先要添加B站APP到软件里面 然后在软件里打开 11 找一下番 12 实测 转载于:https://www.cnblogs.com/ ...

  4. Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)

    本博客将会对B站番剧排行榜的数据进行信息爬取以及数据可视化分析,适应最新的B站网页结构 参考大佬:https://blog.csdn.net/Jacompol/article/details/1116 ...

  5. python爬b站番剧_Python爬取B站动漫番剧更新信息,附代码和讲解过程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 目标:爬取b站番剧最近更新 输出格式:名字+播放量+简介 那么开始撸吧~ 用到的 ...

  6. python爬取B站番剧索引页面并保存文本和图片

    该篇文章为"行路难=_="原创 期末的Python考试要写一个爬取网站信息的程序,我就选取了b站番剧索引页面作为目标网页(因为感觉番剧主页的信息太杂了.) 目标网页:https:/ ...

  7. datetime 索引_Python爬取B站番剧索引页面并保存文本和图片

    期末的Python考试要写一个爬取网站信息的程序,我就选取了b站番剧索引页面作为目标网页(因为感觉番剧主页的信息太杂了.) 目标网页:https://www.bilibili.com/anime/in ...

  8. 爬虫练习四:爬取b站番剧字幕

    由于个人经常在空闲时间在b站看些小视频欢乐一下,这次就想到了爬取b站视频的弹幕. 这里就以番剧<我的妹妹不可能那么可爱>第一季为例,抓取这一番剧每一话对应的弹幕. 1. 分析页面 这部番剧 ...

  9. HttpClient实战爬虫B站番剧

    准备 我们打开一个b站首页,选择番剧索引. https://www.bilibili.com/anime/index/#season_version=-1&area=-1&is_fin ...

最新文章

  1. 信号完整性(四):信号振铃是怎么产生的
  2. thymeleaf+bootstrap,onclick传参实现模态框中遇到的错误
  3. 手机如何升级为鸿蒙系统,华为手机如何升级鸿蒙系统
  4. CheckBox in ListView
  5. 使用ConfigModule.withConfig替换SAP Spartacus标准Component
  6. 如何使用SAP UI5 Web Component for React的padding功能
  7. qq传输文件的软件测试点,超强新功能 QQ传文件夹测试版抢先试用
  8. Moonlight 2紧随Silverlight而来
  9. 经典面试题:有序矩阵的快速查找
  10. iptables conntrack有什么用
  11. vue改页面顶部浏览器标题栏图标、名称和地址栏详细教程
  12. win10 python安装以及编辑器pycharm安装
  13. Mac安装Linux虚拟机
  14. Java并发编程--线程池ThreadPollExecutor原理探究
  15. 基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改
  16. SSH远程控制与访问
  17. css33d图片轮播_通过html+css3实现图片轮播切换
  18. 把php数据转成json格式转换,php将从数据库中获得的数据转换成json格式并输出的方法...
  19. 一缕黑暗中的火光-----------状态图--------------优雅的建模语言
  20. html在小的电脑屏幕字体缩小,网页的字变小了怎么办?教你3种方法,让你看网页不再费眼~...

热门文章

  1. Oracle 精编实用手册
  2. 小米路由器4A,(R4A千兆版)刷openwrt系统(Linux的一种)
  3. 机器学习【吴恩达|周志华|李宏毅|算法】清单
  4. ant弹窗_基于AntDesign改造优化的Modal弹窗
  5. 手动配置协议和服务器POP,在outlook上添加账户并介绍邮件协议相关知识
  6. 一些实用的镜像网站推荐
  7. C++ 11 内容总结
  8. Endnote导入知网、EI、IEEE数据库文献
  9. 2021-12-11 工作记录--Wechat applet-结合<van-popup>和<van-picker> 实现年份、月份下拉选择弹窗+禁止滚动穿透
  10. 20200120 数据结构和算法之 数组循环队列的实现