Python爬虫之b站的正确打开方式

文章转载自 「brucepk

国庆假期,大家应该都出去浪了吧,不用想,各个景区应该都是人满为患了,大部分时间都花在排队上了。pk哥知道人多,哪儿也没去,就在附近转悠了下,在家闲着了。这不,为了给排队等待的朋友解闷,我这次对 b 站下手了。我用 Python 对 b 站的小视频进行了爬取,因为是小视频,大小平均在 5 兆以内。排队时,没网络也能看小姐姐了,爽啊。文末给出了源码获取方式。

b 站小视频地址:

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

项目环境

语言:Python3

工具:Pycharm

程序结构

主要由 3 部分组成:

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

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

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

代码分析

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

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181006A0BKKP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券