selenium、you-get下载B站视频、监控播放量和弹幕

selenium、you-get下载B站视频、监控播放量和弹幕

说明

前两段代码是使用you-get下载视频,第一段是说明。第三段代码爬取b站视频的标题+播放量+弹幕数。注意点都写在了注释中,运行结果见最后。

完整代码

#代码段1
#下载b站视频
#先使用cmd安装you-get:  pip/pip3 install you-get 
import os
BVnum='BV号'    
Bpath='https://www.bilibili.com/video/'+BVnum  #BV号
#command='you-get -i ' + path #查看视频的信息
command='you-get -o D:/movie --format=flv ' + Bpath     
#-o 后面填写视频保存地址
#-format表示下载的格式,由上一步输出的信息,不同清晰度-format也不同 ,-format可以用于选择清晰度
#-playlist在遇到多p视频时,会都进行下载。
os.system(command) 
#下载完还会有一个xml文件,里面存放的是视频的弹幕


#代码段2
#下载收藏夹中的内容:
#大多数时候下的挺慢的,不是很实用,不过可以挂在那里下。
#前提是要访问的收藏夹打开了隐私。
#类似的,下载某个up主的所有视频也可以这样下载,只是xpath定位的class要变一变了.
from selenium import webdriver
import timeimport os
def PageNum():         #获取总的页数    
    page=driver.find_element_by_class_name('be-pager-total').text    
    pagenum=page[2:-3]    
    return pagenum
def Page_Next():       #点击下一页    
    page=driver.find_element_by_class_name('be-pager-next')    
    page.click()
if __name__=='__main__':    
    url="https://space.bilibili.com/UID/favlist" #填写uid   
    driver=webdriver.Chrome()    
    driver.get(url)    
    driver.maximize_window()    
    for i in range(0,int(PageNum())):        
        favor=driver.find_elements_by_xpath('//ul[@class = "fav-video-list clearfix content"]/li')        
        for ul in favor:            
            url='https://www.bilibili.com/video/'+ul.get_attribute('data-aid')   #获取BV号            
            command='you-get -o D:/movie --playlist --format=flv ' + url   #-format=flv下载的是1080p,如果某个视频没有1080p可能会报错            
            os.system(command)        
        Page_Next()        
        time.sleep(3)  #等待加载    
    driver.quit()


#代码段3
#监控B站视频的标题,播放量和弹幕数量
#不想打开浏览器可以使用无头模式,将数据取出来。无头模式会把console里的内容打印出来,所以这里暂时没采用。
from selenium import webdriver
#from selenium.webdriver.chrome.options import Options   #无头模式
import timeimport osif __name__=='__main__':    
    url="https://www.bilibili.com/video/BV号"   #视频地址    
    driver=webdriver.Chrome()    
    driver.get(url)    
    driver.maximize_window()    
    count=0 #控制次数    
    while(True):        
        driver.refresh()        
        time.sleep(5)      #等待页面加载
        page=driver.find_elements_by_xpath('//div[@id = "app"]/div[@class="v-wrap"]/div[@class="l-con"]/div[@id="viewbox_report"]')        
        #视频标题        
        titles=page[0].find_elements_by_xpath('.//span[@class="tit"]')             
        if len(titles)==0:            
        titles=page[0].find_elements_by_xpath('.//span[@class="tit tr-fix"]')      #标题的class好像有时候不一样,针对着改一下        
        title=titles[0].text                       
        #播放量        
        plays=page[0].find_element_by_class_name("view")        
        playnum=plays.text        
        play=playnum[:-5]        
        #弹幕数量        
        barrages=page[0].find_element_by_class_name("dm")        
        barrage=barrages.text        
        barr=barrage[:-2]        
        print('标题:' + title + '\n' + '播放量:' + play + '\n' + '弹幕数:'+barr)        
        count=count+1        
        if  count==10:     #自己改终止条件            
            break

运行结果

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值