python爬取B站弹幕数据

获取方式1(获取弹幕量少)

随便打开一个热门的视频链接,再bilibili.com前加i

这里可以直接看到当前视频的弹幕地址,可以直接用正则表达式筛选出所需的弹幕内容

 获取方式1代码

import requests
import re
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=1355655729'
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0'
 }

response = requests.get(url=url,headers=headers)
response.encoding = 'utf-8'  #进行转码防止乱码
content_list = re.findall('<d p=".*?>(.*?)</d>',response.text)
content = '\n'.join(content_list)
with open('弹幕1.txt',mode='a',encoding='utf-8') as f:
    f.write(content)
print(content)

将爬取到的数据保存为弹幕1.txt文件,打开查看内容 (方式一简单但爬取到的弹幕内容较少)

获取方式2(可以获取全部的历史弹幕)

打开页面的开发者模式,打开网络,点击前一天的历史弹幕,能看到弹幕数据

因为历史弹幕要登陆才能查看,这里要在headers中加入自己浏览器的cookie(包含登录信息)

import requests
import re
for page in range (6,8):  #爬取六号和七号的弹幕
    url = f'https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=1355655729&date=2023-12-0{page}'
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0',
        'Cookie': #浏览器中的cookie

     }
    response = requests.get(url=url,headers=headers)
    response.encoding = 'utf-8'  #进行转码防止乱码
    content_list = re.findall('[\u4e00-\u9fa5]+',response.text)   #正则表达式只匹配中文
    content = '\n'.join(content_list)
    with open('弹幕2.txt',mode='a',encoding='utf_8') as f:
        f.write(content)
    print(content_list)

根据要获取的弹幕天数,我这里for page in range (6,8):只为了获取 ,六号到七号的所有弹幕。

生成结果为弹幕2.txt的文本文件,打开查看结果

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
B数据,可以使用Python编程语言来实现。下面是一个示例代码,可以帮助你完成这个任务: ```python import requests from bs4 import BeautifulSoup import docx def main(): url = 'https://comment.bilibili.com/251139222.xml' savename = 'B幕1.docx' title = '风犬少年的天空第二集' link = 'https://www.bilibili.com/bangumi/play/ep340251?from=search&seid=11822154625123447233' # 1.访问数据 html = accessbarrage(url) # 2.对数据进行解析 comments = analysibarrage(html) # 3.保存到doc文件 savebarrage(comments, title, link, savename) def accessbarrage(url): html = requests.get(url).content return html def analysibarrage(html): html_data = str(html, 'utf-8') bs4 = BeautifulSoup(html_data, 'lxml') results = bs4.find_all('d') comments = {comment.text for comment in results} comments = list(comments) comments = sorted(comments) return comments def savebarrage(comments, title, link, savename): doc = docx.Document() doc.add_heading(title, level=1) doc.add_paragraph('视频链接:' + link) doc.add_heading('幕内容:', level=2) for comment in comments: doc.add_paragraph(comment) doc.save(savename) main() ``` 这段代码首先定义了一个`main()`函数,作为程序的入口。在`main()`函数中,首先通过`accessbarrage()`函数访问数据,然后通过`analysibarrage()`函数对数据进行解析,最后通过`savebarrage()`函数将解析后的数据保存到doc文件中。 `accessbarrage()`函数使用`requests`库发送HTTP请求,获数据的原始HTML内容。`analysibarrage()`函数使用`BeautifulSoup`库对HTML内容进行解析,提幕内容,并进行排序。`savebarrage()`函数使用`docx`库创建一个Word文档,并将幕内容添加到文档中。 你可以根据自己的需求修改代码中的URL、文件名等参数,以及对数据的处理方式。希望对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [python虫实践-B幕分析](https://blog.csdn.net/qq_45886782/article/details/120854725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python 周董新歌《Mojito》MV幕,看看粉丝们都说了些啥](https://blog.csdn.net/fei347795790/article/details/106871478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值