B站数据可视化视频逐渐流行,想做一期B站视频类型的数据分析,故开始爬取视频信息,来挖掘内容。
爬虫思路
网页分析
目标是爬取每个视频的av号、视频标题、视频类型、上传时间、作者(UP主)、弹幕数、评论数、收藏数、投币数、点赞数。
看起来很简单嘛,需要的内容都可以从网页源代码获取,简单的正则处理就好了。。。然而事实是这样吗?
import urllib.request
response = urllib.request.urlopen("https://www.bilibili.com/video/av2/")
print(response.info())
print(response.read())
response.close()
在运行过后,403 错误,服务器拒绝了我们的访问。
运行结果
HTTPError: HTTP Error 403: Forbidden
这是我们本次爬虫遇到的第一个坑。在浏览器中能正常返回响应,但是直接打开请求链接时,却会被服务器拒绝。
第一反应是,静态爬取方式不行,就用动态的爬取方式吧,找它的js加载。
OK,我们需要的数据都在这了,view?aid还包括了视频的标题,作者,视频类型等,就决定是你了。(注意视频的审核通过时间ctime在源代码处为Unix时间戳,后续须做格式转换)
获取它的URL,很明显的是https://api.bilibili.com/x/web-interface/view?aid=2,通过多个视频网页对比分析,’2‘为每个视频的av号。
测试下能否获取