我用 Python 对 b 站的小视频进行了爬取,因为是小视频,大小平均在 5 兆以内。排队时,没网络也能看小姐姐了,爽啊。文末给出了源码获取方式。

b 站小视频地址:

http://vc.bilibili.com/p/eden/rank#/?tab=全部

我爬取了每日的小视频排行榜,学会了每日的,爬取本周、本月的就非常简单了,改个标签就行,稍后详细分析会讲到。以下是爬取结果。

项目环境

语言:Python3
工具:Pycharm

程序结构

主要由 3 部分组成:

  • get_json():提取目标网页的 json 数据信息。

  • downloader():下载小视频并显示下载进度。

  • 主函数:循环下载视频直到下载完毕。

代码分析

打开网站往下滑动,视频是动态加载的,打开调试工具,向下滑动加载视频,查看 Headers 中 url ,url 中前面部分的链接是不变的,提取出来。(左右滑动查看全部代码)

http://api.vc.bilibili.com/board/v1/ranking/top?

观察下方参数的变化,发现只有 next_offset 这个字段在变,每次都比前一个多 10。

这就好办了,我们把参数部分单独拿出来,把可变的 next_offset 写成变量,返回目标网页的 json 数据。

接下来,我把小视频下载下来,为了美观,我做了个下载器,显示下载速度。效果如下。

此处有个地方需注意下,请求目标网页时必须带上此网页的 headers 信息,网站做了反爬操作,否则下载下来的视频是空的,部分代码如下。(ps:大家运行代码时把 headers 换成自己浏览器在本网页的 headers 即可)

主函数中为了提取更多视频,我们把 next_offset 这个变量做个循坏,然后从 json 数据中提取视频的标题和可下载的链接。观察下页面的 json 数据结构就可以轻松获取文章标题和下载链接数据。

为了防止有些视频没有提供下载链接的情况,我加了异常处理,细心的朋友应该发现了文章前面给的效果图只有84个视频,原因就在此。最后,为了防止 ip 被封,设置了随机等待时间。其实,总体下来,不到 5 分钟,100 个视频可以全部下载完毕。

今日排行榜的 100 个小视频搞定了,每周、每月的就简单了,get_json() 方法中参数 params 有个标签字段 tag,每日的是「今日热门」,每周的改成「每周热门」,每月的改成「每月热门」就搞定了。

源码获取:

链接:https://pan.baidu.com/s/1IL5ZVu4vLIvpZ1aXpwZmbg 提取码:7962

Python爬虫之bili站的正确打开方式相关推荐

  1. python论文参考文献名称_Word的正确打开方式(附毕业论文模板)

       ----点击蓝字关注我呀---- 三年前的我搞毕业设计,第一次接触这玩意儿,一脸懵逼 好在我朱哥搞过大创(还是国家级的),当时给我各种科普单片机的知识 搞大创的好处就是当我们不知道是画机械图还是 ...

  2. 这才是B站的正确打开方式!

    关注+星标,每天学习C语言新技能 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源:网络 每天都在用B站刷杂七杂八的视频,有没有考虑 ...

  3. python实现p图软件_这才是Python程序员P图的正确打开方式!

    [IT168 评论]现代社会,不P图的人简直就像是恐龙一样稀奇,大到瘦脸瘦腿瘦全身,小到滤镜大眼高鼻梁,五花八门的手段令人应接不暇.那么程序员作为这个星球的特殊物种,P图才不会用毁图秀秀这种软件,下面 ...

  4. log python_基于Python log 的正确打开方式

    保存代码到文件:logger.py import os import logbook from logbook.more import ColorizedStderrHandler import sm ...

  5. python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!

    四舍五入就用round( )?Python四舍五入的正确打开方式! 2018-09-22 21:40 阅读数 4 <>round( )函数简介 菜鸟教程中介绍到,round() 函数作用就 ...

  6. ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学, 你就是下一个大佬❤️!

    ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学,你就是下一个大佬❤️! 前言 程序说明 数据爬取 获取 CSDN 作者总榜数据 获取收藏夹列表 获取收藏数据 爬虫程序完整代码 ...

  7. lambda学习视频和stream学习视频(Java8 Lambda表达式视频教程)-Java爬虫-网络购物的正确打开方式

    百度网盘 链接:https://pan.baidu.com/s/1upU5EVXOQeho6poDYdnhiQ 提取码:088l Java8 Lambda表达式视频教程 https://www.bil ...

  8. 【Python】NumPy 中 ravel() 正确打开方式

    [Python]NumPy 中 ravel() 正确打开方式 最近在看书时,对numpy的ravel()的有些疑惑,书上这样写到"如果结果中的值在原始数组中是连续的,则ravel 不会生成底 ...

  9. Python Matplotlib绘图的正确打开方式

    Python Matplotlib绘图的正确打开方式 文章目录 Python Matplotlib绘图的正确打开方式 1.先搞懂fig.axes.axis `Figure` `Axes` `Axis` ...

最新文章

  1. Spring并发访问的线程安全性问题
  2. 利用OpenCV实现图像修复(含源码链接)
  3. js手机端时间区间_js 时间区间
  4. 分子克隆科研利器SnapGene,测序验证好帮手
  5. 如何删除SQL Server下注册的服务器
  6. twisted系列教程九–Deferred 的第二个小插曲
  7. win10wifi间歇性断网重启后恢复_实用!Xbox Series X 在重启后也能快速恢复之前的游戏状态...
  8. Rust: trait 孤儿规则
  9. 手机上怎么安装Java的软件游戏
  10. 跨境电商ERP系统功能有那些?
  11. Verilog 语法小结
  12. mysql省市区数据导入_最新行政区划省市区镇街道 导入数据库 MYSQL (2020年8月 )
  13. 知识分享 | 卡方分析的入门小知识
  14. vue 前端仿QQ截图实现Web端自定义截屏(JS版)
  15. C++ 面向对象高级开发(侯捷)
  16. Linux使用详解(进阶篇)
  17. SVN修改提交后的文件名
  18. 如何禁用笔记本触摸板
  19. Delta tuning(只抓核心)
  20. 2021-09-15单片机方案——LED补光灯方案

热门文章

  1. Windows10下安装vs2013旗舰版(Visual Studio 2013 Ultimate)
  2. 传播模型——简单的元胞自动机(3)
  3. transition transform translate 之间的区别
  4. 一些http和tomcat知识补充
  5. 【JDK编译】Centos7编译OpenJDK7
  6. android imageview 拉伸图片大小,【教程】安卓保证图片长宽比的同时拉伸图片
  7. 思科SCCP CIPC软电话安装成SIP软电话
  8. 转:MIME(Multipurpose Internet Mail Extensions)类型
  9. 从零开始:微信小程序新手入门宝典
  10. 【数学建模】“一口价”的战略(博弈模型)