ビリビリ弹幕コレクター

这是一个Python爬虫程序,用于从哔哩哔哩网站抓取指定视频的弹幕信息。首先,它通过正则表达式从视频URL的JS脚本中提取CID,然后利用CID构建弹幕XML的URL。接着,程序使用requests库下载XML文件,并利用lxml库解析XML以获取弹幕内容。最后,程序遍历并打印出所有弹幕文字。
摘要由CSDN通过智能技术生成

参考了传送门 致上感谢
自己改一改网址吧
网上的方法一般是找到弹幕的xml文件 但是这个文件似乎已经被隐藏了
但是cid没有被隐藏 由此还可以转换一下思路
先正则一下cid
然后通过comment.ビリビリ.com/cid.xml获取到弹幕

# coding=utf-8
import requests
from lxml import etree
import re
class BiliSpider:
    def __init__(self,BV):
        # 构造要爬取的视频url地址
        self.BVurl = "https://ビリビリ.com/video/"+BV
        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}

    # 弹幕都是在一个url请求中,该url请求在视频url的js脚本中构造
    def getXml_url(self):
        # 获取该视频网页的内容
        response = requests.get(self.BVurl, headers = self.headers)
        html_str = response.content.decode()
        # 使用正则找出该弹幕地址
        # 格式为:https://comment.ビリビリ.com/168087953.xml
        # 我们分隔出的是地址中的弹幕文件名,即 168087953
        getWord_url = re.findall("cid=\d+", html_str)

        getWord_url = getWord_url[0][4:]
        # 组装成要请求的xml地址
        xml_url = "https://comment.ビリビリ.com/{}.xml".format(getWord_url)
        return xml_url

    # Xpath不能解析指明编码格式的字符串,所以此处我们不解码,还是二进制文本
    def parse_url(self,url):
        response = requests.get(url,headers = self.headers)
        return response.content

    # 弹幕包含在xml中的<d></d>中,取出即可
    def get_word_list(self,str):
        html = etree.HTML(str)
        word_list = html.xpath("//d/text()")
        return word_list

    def run(self):
        # 1.根据BV号获取弹幕的地址
        start_url = self.getXml_url()
        # 2.请求并解析数据
        xml_str = self.parse_url(start_url)
        word_list = self.get_word_list(xml_str)
        # 3.打印
        for word in word_list:
            print(word)

if __name__ == '__main__':
    BVName = input("请输入要爬取的视频的BV号:")
    spider = BiliSpider(BVName)
    spider.run()



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值