java弹幕爬取,手把手教你爬取B站弹幕(超详细)!
效果
输入要爬取的视频的BV号即可爬取该视频的弹幕。
过程
基本思路
基本的思路很简单,还是老步骤:
1、构造爬取的url
2、解析返回的数据
3、使用json或Xpath或正则表达式提取数据
4、保存数据
寻找url地址
第一步
刚开始还是从网页版中寻找url地址,结果请求很多,找了半天也没有找到
第二步
于是我们可以访问一下手机版的页面,而根据常识,弹幕这种东西一般是通过ajax来请求的,所以我们过滤一下,只看异步请求。
此时请求就变得少了很多,但是依然没有找到我们需要的弹幕数据,此时才发现我们并没有点击播放视频。
第三步
弹幕是在视频播放的过程中播放的,理所当然只有当我们播放视频并且打开弹幕后才会请求弹幕的数据,我们点击播放。
点击播放后我们可以发现请求变多了,再次寻找我们发现 168881748.xml 请求的地址便是弹幕数据了。
第四步
到这里我们就想到了,这种地址是怎么请求的呢?不同的视频请求的地址肯定是不一样的,应该是js生成的吧!现在我们来搜索一下该文件名``168881748`
很显然这是构造出来的地址,我们点进去看一下
不出所料是js构成的请求地址,我们可以发现这便是页面的数据,我们进一步去验证一下,刷新页面,查看一下网页的数据。
果然在该页面的文档中我们找到了
现在的思路
现在思路就很清晰了
1、通过视频url获取弹幕文件url
2、爬取弹幕文件url
3、提取数据
代码实现
# coding=utf-8
import requests
from lxml import etree
import re
class BiliSpider:
def __init__(self,BV):
# 构造要爬取的视频url地址
self.BVurl = "https://m.bilibili.com/video/"+BV
self.headers = {"User-Agent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Mobile 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.bilibili.com/168087953.xml
# 我们分隔出的是地址中的弹幕文件名,即 168087953
getWord_url = re.findall(" ‘//comment.bilibili.com/‘+ (.*) +‘.xml‘,", html_str)
getWord_url = getWord_url[0].replace("+","").replace(" ","")
# 组装成要请求的xml地址
xml_url = "https://comment.bilibili.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中的中,取出即可
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()
这里只打印了弹幕,并没有保存,可以根据自己的需求进行更改!
原文:https://www.cnblogs.com/wuren-best/p/12566297.html
java弹幕爬取,手把手教你爬取B站弹幕(超详细)!相关推荐
- 网络爬虫有什么用?怎么爬?手把手教你爬网页(Python代码)
导读:本文主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫:另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以便具备编写HTTP网络程 ...
- 大厂年薪43w测试开发手把手教你搭建Web自动化测试框架,超详细
测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人.本章和 ...
- 手把手教你实现Gitlab远程备份(超详细,图文并茂)
为防止服务器的磁盘损坏数据无法取出,因此我们得做好代码的备份工作,因此除了每天在Gitlab那台服务器上自动备份之外,还需要将每天的备份文件copy到另外一台文件备份服务器上,已达到双保险的要求. 1 ...
- 以『公众号』为例,手把手教你爬取PC端数据
之前教过大家如何爬取手机APP数据[以某乎为实战案例,教你用Python爬取手机App数据] 思路:主要是通过手机设置代理,然后在pc端开启抓包工具获取数据包,然后在编写python代码(get方式) ...
- 手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示
大家好,我是阿辰,今天手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示 上次有粉丝说,那个是ios手机,安卓手机现在需要root权限才可以安装证书,那么今天就不以手机为例,以电脑PC端为 ...
- 【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔!
以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,转载请说明出处,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/art ...
- python 批量下载网页图片_手把手教你爬取天堂网1920*1080大图片(批量下载)——实战篇|python基础教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ /1 前言/ 上篇文章 手把手教你爬取天堂网1920*1080大图片(批量下载)--理论篇我们谈及了天堂网 ...
- 手把手教你爬取清纯小姐姐私房照,小孩子写学
手把手教你爬取清纯小姐姐私房照,小孩子写学 先上效果图 头文件: 因为爬虫需要用到请求网络部分,所以需要这两个包,没有的话自行下载即可.这个可以直接用pip安装.如果连pip都不懂,那就只能学习一下p ...
- 爬取医药卫生知识服务系统的药品数据——超详细流程
爬取医药卫生知识服务系统的药品数据--超详细流程 文章目录 爬取医药卫生知识服务系统的药品数据--超详细流程 前言 一.寻找药品数据 二.爬取药品ID 1.资源获取 2.数据提取 3.资源保存 4.主 ...
- Shopify成功案例,手把手教你玩转独立站
Shopify成功案例,手把手教你玩转独立站 COVID-19的大流行对全球经济产生了较大的冲击,电子商务行业也不能幸免.我们的Shopify商店如何在这场全球灾难中生存?也许你可以在这些成功的Sho ...
最新文章
- ATS名词术语(待续)
- C 语言编程 — const 关键字
- RGB CMYK HSV LAB
- 观察性研究的网络Meta分析
- [LeetCode] Remove Duplicates from Sorted List - 链表问题
- linux7怎么安装yum,centos7下怎么安装yum
- 04.MyBatis别名的设置和类型转换器
- Tensorflow保存神经网络参数有妙招:Saver和Restore
- System.Data.Sqlite批量添加数据
- Metasploit物联网安全渗透测试增加对硬件的支持
- mac下查看.mobileprovision文件及钥匙串中证书.cer文件
- 夜神模拟器 Fiddler Tunnel to......443
- 无源晶振有方向吗?无源贴片晶振贴反会怎样?
- 什么是Cutoff Scores/Marks?
- css 毛玻璃: backdrop-filter
- vb 读取mysql所有表名_VB 读取ACCESS数据库中所有表名和指定表字段名.doc
- 第一章 matlab 学习入门之matlab基础
- Python中for循环的使用
- [随笔所想] 学英语打卡2000天碎碎念
- SQL16 查找GPA最高值