34 爬虫 | Python爬取B站榜排行榜信息
- 爬虫系列
- 5天前
- 913热度
- 1评论
大家好,我是欧K~
本期给大家分享一下如何用python获取B站排行榜的视频信息,包含标题、作者、时长、点赞量、播放量、收藏量、投币、转发量、评论数量、弹幕数量、发布地点、视频描述、链接等信息,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。
所有内容仅供参考,不做他用。
1. 网页分析
目标网址(排行榜):
https://www.bilibili.com/v/popular/rank/all

这个榜单一共有100条,每个时刻可能都不一样(实时榜单)。
接下来,按 F12 或者右键选择审查元素,以第一个视频为例搜索一下:

可以看到这里有个json格式的数据,列表索引0-99,正好100条,打开第一条查看title发现这就是我们榜单的第一条信息,基本上确定这个列表就是我们要的排行榜TOP100了。
2. 爬取数据
2.1 导入模块
import json
import requests
from bs4 import BeautifulSoup
import pandas as pd
2.2 请求网页数据
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
}
url = 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
rank = requests.get(url, headers=headers)
2.3 解析json数据
# 标题
title = one_data['title']
# 作者
owner = one_data['owner']['name']
# 发布地点
pub_location = ''
if 'pub_location' in list(one_data.keys()):
pub_location = one_data['pub_location']
# 描述
desc = one_data['desc']
# 时长
duration = one_data['duration']
stats = one_data['stat']
# 点赞量
like = stats['like']
# 播放量
view = stats['view']
# 收藏量
favorite = stats['favorite']
# 投币
coin = stats['coin']
# 转发量
share = stats['share']
# 评论数量
reply = stats['reply']
# 弹幕数量
danmaku = stats['danmaku']
# 链接
short_link_v2 = one_data['short_link_v2']
2.4 保存结果
df = pd.DataFrame(all_data,columns=cols)
df.to_excel('test.xlsx',index=None)
