爬取哔哩哔哩数据

本文档介绍了如何使用Python爬取B站(哔哩哔哩)视频的弹幕数据。首先,通过分析网页源代码找到弹幕XML文件的链接,然后编写代码爬取指定范围内的视频链接,并保存到CSV文件。接着,读取CSV文件中的视频链接,爬取每个视频的弹幕数据,将其保存为XML和CSV文件,以便后续分析。最后展示了部分爬取成功的弹幕数据。
摘要由CSDN通过智能技术生成

1、前言

哔哩哔哩是当代年轻人最喜欢的app之一,最近呢又看到了哔哩哔哩上了热收哈哈哈哈。今天呢就来爬取一下B站的一些数据

2、分析

首先我们肯定是要获取他的链接找到弹幕存储的位置 

示例链接:

https://www.bilibili.com/video/BV1TX4y1P7BK

我们查看网页的源代码:

查阅资料可以知道在弹幕是存储在https://comment.bilibili.com/331677295.xml这个文件里面

我们查看一下

 可以看到这个视频的弹幕都在这了只需要把他提取出来就欧克了

代码

首先我们需要知道我们要爬取视频的链接,所以我们先获取他的链接怎么获取链接呢?

import requests
from bs4 import BeautifulSoup


url = 'https://www.bilibili.com/v/popular/rank/all'  # 爬取B站排行榜(总榜)上视频链接
res = requests.get(url)
soup = BeautifulSoup(res.text, 'lxml')
# 定义列表来存储数据
Author = []  # 作者
URL = []  # 链接
Name = []  # 标题
# 利用bs4,找到视频链接以及视频名字和up主
get_Author = soup.find_all('span', class_='data-box up-name', )
get_url = soup.find_all('a', class_="title")
# 将数据存入列表中
for data in get_Author:
    author = data.text.replace('\n', '').replace(' ', '')
    Author.append(author)
for item in get_url:
    URL.append(item['href'].replace('//', 'https://'))  # 找到链接并转换成链接形式
    Name.append(item.text)

# 将数据写入文件中保存下来
header = ['作品名', '作者', '作品链接']
headers = ','.join(header)
date = (list(z) for z in zip(Name, Author, URL))  # 把数据成组,方便写入文件。
with open("作品数据.csv", 'w+', encoding='utf-8') as f:
    f.write(headers+'\n')
    for i in date:
        i = ','.join(i)  # 将列表转为字符串
        f.writelines(i+'\n')
print('{:*^30}'.format('保存成功!'))

这就是我们获取目标视频链接代码

run一下

保存成功在看一下数据。

 完美

接下来就开始写爬取弹幕数据的代码

import re
import requests
import pandas as pd
import time

# 从作品数据中把URL读取出来,爬取相对应的视频弹幕。
data = pd.read_csv('作品数据.csv', encoding='utf-8')
get_url = data['作品链接']
get_name = data['作品名']
get_author = data['作者']


# 开始爬取弹幕,写一个函数来爬取对应作品排名的弹幕
def get_danmu(i, j):  # 从第i名开始到第j名结束
    i = i-1  # 列表数据是从0开始的所以先减一
    while i < j:  
        url = str(get_url[i])
        res = requests.get(url)  # 请求网页
        cid = re.findall(r'"cid":(.*?),', res.text)[-1]  # 找到cid从源代码中res.text 发现最后一个是我们需要的数据我们取最后一个
        url = f'https://comment.bilibili.com/{cid}.xml'  # 利用格式化字符串来组成我们需要的文件。
        res = requests.get(url)
        with open('弹幕源文件/{}.xml'.format(get_name[i]), 'wb') as f:  # 将数据写入文件中
            f.write(res.content)
        with open('弹幕源文件/{}.xml'.format(get_name[i]), encoding='utf-8') as f:
            Shuju = f.read()
        comments = re.findall('<d p=".*?">(.*?)</d>', Shuju)  # 只保存弹幕数据其他的就不保存了
        Danmu = [item for item in comments]
        headers = 'text'  
        Danmu.insert(0, headers)  # 添加表头
        with open('弹幕数据/{}的弹幕;up主:{}.csv'.format(get_name[i], get_author[i]), 'w', encoding='utf_8_sig') as f:
            f.writelines([line+'\n' for line in Danmu])  # 写入数据
        i += 1  # 开始爬取下一页
        print('{:*^30}'.format('第{}名作品弹幕爬取成功'.format(i)))  # 有利于观察我们爬在哪了。
        time.sleep(1.5)  # 睡眠1.5秒防止爬取过快,封ip


get_danmu(int(input("从第几名开始:")), int(input('到第几名结束:')))  # 开始跑函数

 代码写完毕了我们run一下

爬取成功

查看数据

 

 看起来不错

如果感兴趣下一篇文章来分析我们爬取的弹幕数据,看看有什么值得我们取挖掘的。

 

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 下面是一个Python爬虫爬取哔哩哔哩视频信息并导出Excel的示例代码,具体步骤如下: 1. 导入需要的库。 ``` import requests import json import xlwt ``` 2. 定义请求头和请求参数。 ``` headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} params = { 'mid': '9144082', # 用户id 'pagesize': '30', # 每页大小 'tid': '0', # 0为全部,其他为分类id 'page': '1', # 页码 'keyword': '', # 搜索关键字 'order': 'senddate' # 排序方式,按照发布时间排序 } ``` 3. 发送HTTP请求,并解析响应数据。 ``` url = 'https://space.bilibili.com/ajax/member/getSubmitVideos' video_list = [] while True: response = requests.get(url, headers=headers, params=params) data = json.loads(response.text) vlist = data['data']['vlist'] if len(vlist) == 0: break for video in vlist: item = { 'title': video['title'], # 视频标题 'play': video['play'], # 播放数 'review': video['review'], # 弹幕数 'comment': video['comment'], # 评论数 'favorite': video['favorites'], # 收藏数 'coin': video['coins'], # 硬币数 'share': video['share'], # 分享数 'time': video['created'] # 发布时间 } video_list.append(item) params['page'] += 1 ``` 4. 将数据导出到Excel文件中。 ``` workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('Sheet1') row = 0 for item in video_list: worksheet.write(row, 0, item['title']) worksheet.write(row, 1, item['play']) worksheet.write(row, 2, item['review']) worksheet.write(row, 3, item['comment']) worksheet.write(row, 4, item['favorite']) worksheet.write(row, 5, item['coin']) worksheet.write(row, 6, item['share']) worksheet.write(row, 7, item['time']) row += 1 workbook.save('video_info.xls') ``` 完整代码如下: ### 回答2: 爬虫是一种通过自动化方式来获取网页信息的程序,它可以模拟人类浏览网页的行为,访问网页并提取所需的数据哔哩哔哩是一个知名的在线视频网站,通过爬虫可以获取其网页上的各种信息。 首先,我们可以使用Python编写一个爬虫程序,使用爬虫框架如Scrapy或BeautifulSoup来获取哔哩哔哩网页上的数据。可以选择爬取视频的标题、观看次数、弹幕数量等信息。通过分析网页的HTML结构,可以编写代码来提取所需的数据。 然后,我们可以将获取到的数据进行处理。可以使用Python中的数据处理库如Pandas来进行数据清洗和整理。可以对数据进行筛选、去除重复项、填充缺失值等处理操作,使得数据更加规整。 最后,我们可以使用Python中的Excel处理库如Openpyxl或XlsxWriter来将处理后的数据导入到Excel中。可以创建一个新的Excel文件,或者将数据写入已有的Excel文件的指定工作表中。可以设置Excel中的单元格样式、格式等,使得数据在Excel中展示更为美观。 总之,我们可以通过编写爬虫程序来获取哔哩哔哩网站上的数据,并使用数据处理库对数据进行清洗和整理,最后使用Excel处理库将数据导入到Excel中,从而实现对哔哩哔哩数据爬取和处理。 ### 回答3: 爬虫是一种程序,能够自动化地收集互联网上的数据。而哔哩哔哩是一个知名的视频分享平台,所以我们可以使用爬虫来收集并处理哔哩哔哩数据,然后将其导入到Excel表格中。 首先,我们需要使用Python编写一个爬虫程序。我们可以使用第三方库如Requests和BeautifulSoup来获取和解析哔哩哔哩的网页内容。通过发送HTTP请求,我们可以获取到哔哩哔哩的页面数据。然后,我们可以使用BeautifulSoup库来解析网页的HTML结构,提取出我们需要的数据,如视频的标题、播放量、评论数等。 接下来,我们可以使用Pandas库来处理和转换数据。Pandas是一个强大的数据处理工具,我们可以使用它来将获取到的数据存储为一个数据框(DataFrame)的形式。通过Pandas,我们可以对数据进行清洗、过滤和转换等操作,使得数据变得更加规整和易于分析。 最后,我们可以使用Openpyxl库来将数据导入到Excel中。Openpyxl是一个用于读写Excel文件的库,它允许我们在Python中操作Excel表格。通过将数据框转换为Excel的工作表,我们可以将收集到的哔哩哔哩数据保存到Excel文件中,以便于后续的数据分析和可视化。 总之,利用爬虫爬取哔哩哔哩并处理数据导入Excel,可以帮助我们更好地分析和利用哔哩哔哩数据资源。这不仅有助于我们了解用户行为和兴趣,还可以帮助企业做出更好的营销和业务决策。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值