获取王冰冰B站视频的实时更新数据
前言
自从央视记者王冰冰开通B站账号认证后,见识到了恐怖的涨粉模式。本次基于B站网页的实时数据更新,简单监测一下涨粉的速度。后续将推出相应的动态数据可视化。(建议在更新的第一时间内运行此程序,获取的数据更为真实有效准确)
软件安装和环境
- Vscode
- 谷歌浏览器驱动chromedriver.exe
网页分析
主要获取的信息
- 当前总播放数
- 当前总弹幕数
- 当前已关注数
- 当前正在看人数
- 当前弹幕池数
- 当前点赞数
- 当前投币数
- 当前收藏数
- 当前分享数
- 评论数
知识点
1. 正则表达式
2. 第三方库Selenium库的方法和函数
2.0 不使用requests库爬虫的原因:
- 需要cookie登录才能获取网页源码
- 有些数据需要后台加载才能显示,不能通过requests.get(url).text获取到
- Selenium可以通过下拉滚动条加载未显示的网页评论部分
2.1 谷歌浏览器的驱动
注意:是谷歌浏览器的驱动exe文件(需要额外下载),不是谷歌浏览器的exe文件
driver = webdriver.Chrome(executable_path=r"D:\Chrome\chromedriver.exe")
2.2 相关属性和方法
属性 | 注释 |
---|---|
driver.page_source | 网页源码 |
driver.title | 网页标题 |
方法 | 注释 |
---|---|
driver.find_element_by_class_name() | 根据类名获取标签 |
driver.get_attribute() | 获取标签的属性值 |
driver.execute_script() | 执行JavaScript语法(此处为下拉和上拉滚动条) |
driver.refresh() | 网页刷新 |
tag.click() | 模拟鼠标点击 |
获取的数据方法有很多,此处就用类名元素定位和正则表达式直接使用寻找了
# 点赞数
like = driver.find_element_by_class_name("like").get_attribute("title")
# 获取投币数
coin = re.findall('<i class="van-icon-videodetails_throw" style="color:;"></i>\n (\d+\.\d+万)',pagesource)[0