精准找到B站大家爱看的王冰冰——用Python

精准找到B站大家爱看的王冰冰——用Python

需求

  • 我们在视频网站检索视频时,通常有对检索内容进一步筛选的需求。比如说,在B站检索某一关键词后,希望得到播放量、弹幕量大于某值,发布时间和视频时长在某个区间的视频列表。但是,B站只提供简单的排序,而没有更高级的筛选功能。因此,自己用Python实现这一功能。

分析

  1. 需要用Python爬到检索页面;
  2. 定位到检索页面的视频信息,包括播放量、弹幕量、发布时间和视频时长;
  3. 将结果导出到Excel中,并筛选出符合条件的视频;

实现

1. 爬虫检索界面

  • B站搜索王冰冰的url网址为:https://search.bilibili.com/all?keyword=%E7%8E%8B%E5%86%B0%E5%86%B0
    在这里插入图片描述

  • 视频时长的位置:
    在这里插入图片描述

  • 观看数、弹幕数、视频时长的位置:
    在这里插入图片描述

  • 源代码:

    from bs4 import BeautifulSoup
    import requests
    
    url = "https://search.bilibili.com/all?keyword=%E7%8E%8B%E5%86%B0%E5%86%B0" #url网址
    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'
    } # 浏览器身份标识, 伪装成正常访问
    
    f = requests.get(url, headers=headers)  # 获取该网页的html内容
    print(f.status_code) # 打印状态码,200表示正确
    
    soup = BeautifulSoup(f.content, "lxml")  # 用lxml解析器解析该网页的内容
    
    title = soup.find_all('a',{"class": {"title"}})  # 视频标题
    time = soup.find_all('span',{"class": {"so-imgTag_rb"}}) # 视频时长
    watchnum = soup.find_all('span', {"class": {"so-icon watch-num"}})  # 视频观看数
    bullet = soup.find_all('span', {"class": {"so-icon hide"}})  # 视频弹幕数
    date = soup.find_all('span', {"class": {"so-icon time"}}) # 视频发布日期
    
  • 测试效果:

在这里插入图片描述

2. 将结果导出到Excel中

  • 源代码:

    import xlwt # 利用xlwt,实现Python对Excel的写入
    
    workbook = xlwt.Workbook(encoding='ascii') # 创建Workbook, 编码格式设置为ascii;
    worksheet = workbook.add_sheet('My Worksheet') # 创建Excel表单, 命名为My Worksheet;
    
    for i in range(len(watchnum)):
        worksheet.write(i , 0, title[i+1].text) # 标题写到第1列, 第一个爬到的text.text是冰冰up主的ID, 
        worksheet.write(i , 1, time[i].text) # 视频时长写到第2列  
        worksheet.write(i , 2, watchnum[i].text) # 观看次数写到第3列
        worksheet.write(i , 3, bullet[i].text) # 弹幕数量写到第4列
        worksheet.write(i , 4, date[i].text) # 发布时间写到第5列
    workbook.save('bingbing.xls')  # 保存文件, 文件名为bingbing.xls
    
  • 写出的bingbing.xls文件效果:

在这里插入图片描述

3. 在Excel中对视频进行筛选

  • 需要先用trim() 函数,将数据前后的空格删掉;
  • 筛选出播放数量>100w,弹幕数量>1w的视频,然后就可以快乐了呀;
    在这里插入图片描述

备注

  • 如果想爬其他关键字的视频,可以自行修改url网址;
  • 只演示如何爬取第一页的视频列表,如果需要所有页的视频列表,写一个循环即可,第二页的网址为https://search.bilibili.com/all?keyword=%E7%8E%8B%E5%86%B0%E5%86%B0&page=2,后面依次类推;
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值