Skip to content
B站2千万视频信息爬虫
Branch: master
Clone or download
Latest commit 6f2082b Sep 3, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
code spider Mar 4, 2018
image
.gitignore Initial commit Mar 2, 2018
LICENSE
README.md
bilibili-spider.py
new-vedio-info-spider.py 2018-9-3更新 Sep 3, 2018
video-data.db

README.md

B站视频信息(av号,播放量,弹幕数,硬币数,分享量,评论数,收藏数)爬虫

本项目最后更新于2018-6-4,可能会因为没有更新而失效。如已失效或需要修正,请提issue!

相关文章:B站用户信息爬虫

在写这个项目时,我还不会Python的协程编程,用协程可提升爬虫速度至少4倍,参考我的文章线程,协程对比和Python爬虫实战说明

声明

  • 代码、教程均为张思淡本人原创,且仅限于学习交流,请勿用于任何商业用途!

数据结果在最下面。

准备工作

我使用的是Python3,数据库用的是Python自带的sqlite,使用requests库爬取。
安装需要的库

pip install requests

直接刷新视频页面来获取视频信息太慢,通过api地址能快速获取视频信息。
如:https://api.bilibili.com/x/web-interface/archive/stat?aid=19801429,
在浏览器中打开这个页面,可以获取json格式的数据:

{
  "code":0,
  "message":"0",
  "ttl":1,
  "data":{
    "aid":19801429,
    "view":583,
    "danmaku":4,
    "reply":2,
    "favorite":378,
    "coin":6,
    "share":6,
    "now_rank":0,
    "his_rank":0,
    "no_reprint":0,
    "copyright":2}
}

使用requests库获取数据,用concurrent.futures的多线程来加快爬取的速度,我采用的是32线程爬取。

数据获取

B站对爬虫采取的是一旦发现,就封ip半小时到1天不等的时间。
但是如果使用代理,爬取总共数量1900万(在2018年2月24,B站视频av号已经到2000万了)个视频信息需要花费很多时间。
幸运的我发现我的服务器爬取B站视频信息不会被封ip,于是我就把爬虫放到服务器上跑了整整5天,获得了1300万条有效数据。数据库文件有300M,GitHub无法上传,

数据处理

我使用的是SQLiteStudio进行数据库操作

查询播放量前十的视频


查询收藏数前十的视频


aid号与播放量关系

可以从下图看出,随aid号的增加,视频的平均播放量在变少,爆款视频也在变少。
我认为主要原因是B站UP主变多,把许多大的UP主的粉丝分流了部分。
画图代码见 aid号与播放量关系.py

收藏数与硬币数关系

画图代码见 收藏数与硬币数关系.py

爬虫代码见 bilibili-spider.py
参考资料: bili-spider

You can’t perform that action at this time.