Bilibili数据分析 B站爬虫|Bilibili视频信息爬取 数据获取方法

需求分析

本工具旨在帮助用户根据特定关键词,爬取 Bilibili 网站上的视频信息。用户需要输入搜索关键词、要爬取的页数以及保存结果的文件名。工具将获取搜索结果中的视频 URL 和 BV 号,并将这些信息保存到一个 CSV 文件中。

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

功能介绍

  1. 根据用户输入的关键词在 Bilibili 网站上搜索视频。
  2. 爬取指定页数的搜索结果。
  3. 提取每个视频的 URL 和 BV 号。
  4. 将结果保存到 CSV 文件中。

代码讲解

导入依赖库

import re
import requests
from lxml import etree
import time
import random
import pandas as pd
  • re: 正则表达式库,用于处理字符串。
  • requests: 用于发送 HTTP 请求。
  • lxml: 用于解析 HTML 文档。
  • time: 用于处理时间,如暂停程序。
  • random: 用于生成随机数。
  • pandas: 用于处理数据表格(如 CSV 文件)。

get_target 函数

def get_target(keyword, page, saveName):

get_target 函数接收三个参数:keyword(搜索关键词),page(爬取页数),saveName(保存文件名)。该函数实现了爬取 Bilibili 视频信息的主要功能。

发送请求,获取 HTML 内容

html = requests.get(url.format(i), headers=headers)

使用 requests.get 函数发送 HTTP 请求,获取特定页面的 HTML 内容。

解析 HTML,提取视频信息

bs = etree.HTML(html.text)
items = bs.xpath('//*[@id="i_cecream"]/div/div[2]/div[2]/div/div/div/div[2]/div/div')

使用 lxml 库解析 HTML 内容,然后使用 XPath 表达式提取包含视频信息的元素。

提取视频 URL 和 BV 号

video_url = item.xpath('./div/div[2]/a/@href')[0].replace("//", "")
video_url_BV = re.findall(r"BV.*?/", video_url)
BV = video_url_BV[0][:12]

对于每个视频信息元素,提取视频 URL,并删除 URL 开头的双斜线。然后,使用正则表达式提取视频的 BV 号。

保存结果到 CSV 文件

result.to_csv(saveName, encoding='utf-8-sig', index=False)

将结果保存到 CSV 文件中,使用 UTF-8 编码。

主程序入口

# 主程序入口  
if __name__ == "__main__":  
    # 获取用户输入的关键词、页数和保存文件名  
    keyword = input("请输入要搜索的关键词:")  
    page = int(input("请输入要爬取的页数:"))  
    saveName = input("请输入要保存的文件名:")  
    # 调用get_target函数,开始爬取数据  
    get_target(keyword, page,saveName)

主程序入口部分用于接收用户输入的关键词、页数和保存文件名,并调用 get_target 函数执行爬取任务。

使用方法

  1. 确保安装了所有依赖库:re, requests, lxml, time, randompandas
  2. 运行脚本。当程序提示输入关键词时,输入要搜索的关键词,例如:“Python”。
  3. 当程序提示输入要爬取的页数时,输入需要爬取的页数,例如:“5”。
  4. 当程序提示输入要保存的文件名时,输入希望保存结果的文件名,例如:“bilibili_videos”。
  5. 程序将开始爬取搜索结果,每爬取一页会输出提示信息,例如:“已经完成b站第 1 页爬取”。
  6. 爬取完成后,程序会将结果保存为一个 CSV 文件(如:“bilibili_videos.csv”),其中包含视频 URL 和 BV 号。

Related Posts