【爬虫】爬取B站UP的所有视频细节信息(通过UP名字)

爬取B站UP主的所有视频细节信息

1. 前言

使用python来爬取B站UP的视频信息,在此之前需要安装一下模块

pip3 install selenium
pip3 install bs4

selenium是一个操作浏览器的Python库,需要安装相应的浏览器驱动。请自行安装。
本文实现了一个可以通过输入B站某个UP主的名字来进行爬取视频信息。

2. 爬取信息的数据结构

爬取的信息存储到JSON中,为以下组织方式:

{
   
    'name': XXX // 视频名称
    'author': XXX //作者名称
    'date': XXX //发布时间
    'url': XXX //视频链接
    'wachted': XXX //观看次数
    'bullet_comments' XXX //弹幕数量
    'liked': XXX //点赞数量
    'coin': XXX //投币数量
    'collected': XXX //收藏数量
    'shared': XXX //收藏数量
    'now_date': XXX //获取信息时间
}

以下为爬取到的信息:
爬取信息

3. 程序说明及注意

3.1 爬取不同UP主

通过更改代码中的

def get_page(upuser_name)

upuser_name 字段的值,可以实现爬取不同UP的视频信息。

3.2 错误说明

当爬取到数据为空时,是由于使用selenium未将网页加载出来,可将其后面sleep值调整的大一点(这里的大小和自己电脑的性能和网络有关,可以先自己操作浏览器判断需要时间,浏览器->F12->Network 刷新一下就可以看到)。

3.3 数据存储

由于爬取的时间较长,可以采用边爬取边存储的方式,以防设备出现故障(本文未采用)。

4. 代码

具体的信息在代码注释都有说明,自行查阅。

# 爬取bilibili up主的视频信息

'''
{
    'name': XXX // 视频名称
    'author': XXX //作者名称
    'date': XXX //发布时间
    'url': XXX //视频链接
    'wachted': XXX //观看次数
    'bullet_comments' XXX //弹幕数量
    'liked': XXX //点赞数量
    'coin': XXX //投币数量
    'collected': XXX //收藏数量
    'shared': XXX //收藏数量
    'now_date': XXX //获取信息时间
}
'''

from selenium import webdriver
import re
import json
from bs4 import BeautifulSoup
import time
from urllib import parse as url_parse
import datetime

class BSpider():

    def __init__(self):
        # 某个up主的视频页面,只需对pagenum字段进行替换切换不同的页面
        options = webdriver.FirefoxOptions()
        options.add_argument('--headless')
        self.main_url = 'https://space.bilibili.com/upuser_id/video?tid=0&page=page_num&keyword=&order=pubdate'
        self.browser = webdriver.Firefox(options=options)

    def close_webdriver(self):
        # 关闭相关驱动
        self.browser.quit()

    def locate2upuser(self, name_string):
        # 通过名字定位到该up主的ID号
        # url中文编码
        name_string = url_parse.quote(name_string)

        self.browser.get('https://search.bilibili.com/upuser?keyword='+name_string+'&page=1&order=fans&
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值