Bilibili数据分析 B站爬虫|Bilibili 视频信息爬取与保存

本代码示例向学习者展示了如何从 Bilibili 网站爬取视频信息,并将获取到的数据保存到 CSV 文件中。以下是本教程的内容概览:

这是 Bilibili 数据分析项目的一部分。

内容概览

  1. 导入所需库
  2. 设置请求头
  3. 定义 API 接口 URL
  4. 从 CSV 文件读取 bvid 列表
  5. 获取视频信息并保存到 DataFrame 中
  6. 将 DataFrame 保存到 CSV 文件中

导入所需库

本代码依赖以下库:

  • time:处理日期和时间
  • tqdm:显示进度条
  • requests:发起 HTTP 请求
  • json:处理 JSON 数据
  • pandas:数据操作和分析
import time
from tqdm import tqdm
import requests
import json
import pandas as pd

设置请求头

请求头是用于伪装成浏览器发送请求,防止被 Bilibili 识别为爬虫。本示例中,我们设置了 User-Agent、Referer、cookie 和 origin 等请求头。

headers = {  
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36',  
    'Referer': 'https://www.bilibili.com/',  
    'cookie': "YOUR COOKIE",  
    'origin': 'https://www.bilibili.com'  
}

定义 API 接口 URL

本示例使用的 API 接口 URL 为:https://api.bilibili.com/x/web-interface/view?bvid=。此接口用于获取指定 bvid 的视频的详细信息。

api_url = 'https://api.bilibili.com/x/web-interface/view?bvid='

从 CSV 文件读取 bvid 列表

我们首先使用 pandas 库读取一个包含视频 bvid 的 CSV 文件,并将 bvid 列表保存到一个变量中。

video_list = pd.read_csv('/Volumes/SSD/Data/getVideoid_byhot.csv')
bvid_list = video_list['bvid'].values.tolist()

获取视频信息并保存到 DataFrame 中

使用 tqdm 包装 bvid_list,以便显示进度条。对于列表中的每个 bvid,我们:

  1. 构造请求 URL
  2. 发起请求并解析 JSON 数据
  3. 提取视频信息并将其保存到字典中
  4. 将字典转换为 DataFrame
  5. 将新 DataFrame 追加到总 DataFrame 中
stat_pd = pd.DataFrame()

for bvid in tqdm(bvid_list):
    page_url = api_url + bvid
    response = requests.get(page_url, headers=headers)
    data = json.loads(response.text)

    info_dic = dict(data['data']['stat'])
    ...

    info_pd = pd.DataFrame(info_dic, index=[0])
    stat_pd = pd.concat([stat_pd, info_pd], ignore_index=True)

将 DataFrame 保存到 CSV 文件中

最后,我们将包含所有视频信息的 DataFrame 保存到 CSV 文件中。

stat_pd.to_csv('/Volumes/SSD/Data/getVideoinfo_byhot.csv')

注意事项

  1. 请确保您有合法的 Bilibili 帐户的 cookie。在本示例中,我们将其添加到请求头中。
  2. 为避免被 Bilibili 限制,可以适当增加请求之间的延迟。本示例未包含此功能。
  3. 如果需要获取更多或不同的视频信息,请根据需要修改 API 接口 URL 和提取信息的代码。

Related Posts