赞
踩
目录
首先,我们需要定义B站热门视频API的URL,并设置请求头以模拟浏览器访问。这样可以避免被识别为爬虫并提高请求的成功率。
- import requests
- import json
- import pandas as pd
-
- # 定义B站热门视频API的URL
- url = 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
-
- # 定义请求头,模拟浏览器访问
- headers = {
- 'Referer': 'https://www.bilibili.com/v/popular/rank/all/',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0'
- }
-
- # 发送GET请求到B站API并获取响应
- response = requests.get(url, headers=headers)
- # 解析响应内容为JSON格式
- data = json.loads(response.text)

从响应数据中,我们可以提取出视频列表,并初始化一些列表来存储视频的详细信息。(这里的各类数据可以按你自己的需求进行选择)
- # 从响应数据中提取视频列表
- video_list = data['data']['list']
-
- # 初始化空列表以存储视频信息
- rank_list = [] # 排行
- title_list = [] # 视频标题
- play_cnt_list = [] # 播放数
- danmu_cnt_list = [] # 弹幕数
- coin_cnt_list = [] # 投币数
- like_cnt_list = [] # 点赞数
- share_cnt_list = [] # 分享数
- favorite_cnt_list = [] # 收藏数
- author_list = [] # 作者
- video_url = [] # 视频地址
-
- # 遍历视频列表并提取每部视频的信息
- for idx, video in enumerate(video_list):
- rank_list.append(idx + 1) # 添加视频排行
- title_list.append(video['title']) # 添加视频标题
- play_cnt_list.append(video['stat']['view']) # 添加播放数
- danmu_cnt_list.append(video['stat']['danmaku']) # 添加弹幕数
- coin_cnt_list.append(video['stat']['coin']) # 添加投币数
- like_cnt_list.append(video['stat']['like']) # 添加点赞数
- share_cnt_list.append(video['stat']['share']) # 添加分享数
- favorite_cnt_list.append(video['stat']['favorite']) # 添加收藏数
- author_list.append(video['owner']['name']) # 添加作者名称
- video_url.append(f'https://www.bilibili.com/video/{video["bvid"]}') # 添加视频地址

最后,我们使用'pandas'库创建一个DataFrame,并将所有提取的数据存储在这个DataFrame中。然后,我们将这个DataFrame保存为CSV文件。
- # 使用pandas创建DataFrame,准备存储所有提取的数据
- df = pd.DataFrame({
- '排行': rank_list,
- '视频标题': title_list,
- '视频地址': video_url,
- '作者': author_list,
- '播放数': play_cnt_list,
- '弹幕数': danmu_cnt_list,
- '硬币数': coin_cnt_list,
- '点赞数': like_cnt_list,
- '分享数': share_cnt_list,
- '收藏数': favorite_cnt_list,
- })
-
- # 将DataFrame保存为CSV文件,不包含索引,使用utf_8_sig编码
- df.to_csv('B站TOP100.csv', index=False, encoding="utf_8_sig")

- import requests # 导入requests库以发送HTTP请求
- import json # 导入json库以处理JSON数据
- import pandas as pd # 导入pandas库以创建和操作数据表格
-
- # 定义B站热门视频API的URL
- url = 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
-
- # 定义请求头,模拟浏览器访问
- headers = {
- 'Referer': 'https://www.bilibili.com/v/popular/rank/all/',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0'
- }
-
- # 发送GET请求到B站API并获取响应
- response = requests.get(url, headers=headers)
- # 解析响应内容为JSON格式
- data = json.loads(response.text)
-
- # 从响应数据中提取视频列表
- video_list = data['data']['list']
-
- # 初始化空列表以存储视频信息
- rank_list = [] # 排行
- title_list = [] # 视频标题
- play_cnt_list = [] # 播放数
- danmu_cnt_list = [] # 弹幕数
- coin_cnt_list = [] # 投币数
- like_cnt_list = [] # 点赞数
- share_cnt_list = [] # 分享数
- favorite_cnt_list = [] # 收藏数
- author_list = [] # 作者
- video_url = [] # 视频地址
-
- # 遍历视频列表并提取每部视频的信息
- for idx, video in enumerate(video_list):
- rank_list.append(idx + 1) # 添加视频排行
- title_list.append(video['title']) # 添加视频标题
- play_cnt_list.append(video['stat']['view']) # 添加播放数
- danmu_cnt_list.append(video['stat']['danmaku']) # 添加弹幕数
- coin_cnt_list.append(video['stat']['coin']) # 添加投币数
- like_cnt_list.append(video['stat']['like']) # 添加点赞数
- share_cnt_list.append(video['stat']['share']) # 添加分享数
- favorite_cnt_list.append(video['stat']['favorite']) # 添加收藏数
- author_list.append(video['owner']['name']) # 添加作者名称
- video_url.append(f'https://www.bilibili.com/video/{video["bvid"]}') # 添加视频地址
-
- # 使用pandas创建DataFrame,准备存储所有提取的数据
- df = pd.DataFrame({
- '排行': rank_list,
- '视频标题': title_list,
- '视频地址': video_url,
- '作者': author_list,
- '播放数': play_cnt_list,
- '弹幕数': danmu_cnt_list,
- '硬币数': coin_cnt_list,
- '点赞数': like_cnt_list,
- '分享数': share_cnt_list,
- '收藏数': favorite_cnt_list,
- })
-
- # 将DataFrame保存为CSV文件,不包含索引,使用utf_8_sig编码
- df.to_csv('B站TOP100.csv', index=False, encoding="utf_8_sig")

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。