原文地址:http://blog.csdn.net/bigbigsman/article/details/78639053

如何写一只抓哔哩哔哩弹幕的爬虫

爬虫工作流程

  1. 解析首页获得视频cid
  2. 构造所有的获取弹幕链接
  3. 解析xml文件并插入数据库
  4. 遍历获取每一集的弹幕内容

1、解析首页获取每一集的cid和内容

访问静态页面,利用lxml解析视频cid和视频内容 
解析如下标记的内容: 

2、构造获取弹幕链接

构造得到弹幕的链接很简单,根据第一步得到的cid

http://comment.bilibili.com/{cid}.xml #cid 第一步获得的
  • 1

根据cid构造url 访问获取弹幕,返回的是xml文件。 
如下: 

3、弹幕xml文件解析

获取的弹幕xml格式如下:

<d p="533.67199707031,1,25,41194,1498943949,0,7edeebe9,3511616609">刀还是没有枪快</d>
  • 1

p这个字段里面的内容: 
0,1,25,16777215,1312863760,0,eff85771,42759017中几个逗号分割的数据 
第一个参数是弹幕出现的时间以秒数为单位。 
第二个参数是弹幕的模式1..3 滚动弹幕 4底端弹幕 5顶端弹幕 6.逆向弹幕 7精准定位 8高级弹幕 
第三个参数是字号, 12非常小,16特小,18小,25中,36大,45很大,64特别大 
第四个参数是字体的颜色以HTML颜色的十进制为准 
第五个参数是Unix格式的时间戳。基准时间为 1970-1-1 08:00:00 
第六个参数是弹幕池 0普通池 1字幕池 2特殊池【目前特殊池为高级弹幕专用】 
第七个参数是发送者的ID,用于“屏蔽此弹幕的发送者”功能 
第八个参数是弹幕在弹幕数据库中rowID 用于“历史弹幕”功能。

4、遍历获取每一集的弹幕

爬虫源码

#coding=utf-8
from lxml import etree
import requests, re, time
import datetime
import sys,sqlite3,os   #初始化数据库
if os.path.exists('bilbili.db'):cx = sqlite3.connect('bilbili.db', check_same_thread = False)
else:cx = sqlite3.connect('bilbili.db', check_same_thread = False)cx.execute('''create table comment(videoname text,chatid text,dtTime text, danmu_model text, font text, rgb text, stamp text, danmu_chi text, userID text, rowID text,message text)''')def request_get_comment(getdetail):'''#获取弹幕内容'''name,url,cid=getdetail# url='http://www.bilibili.com'+urlurl='http://comment.bilibili.com/{}.xml'.format(cid)#preurl='http://www.bilibili.com'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'}response = requests.get(url=url, headers=headers)tree=etree.HTML(response.content)message=tree.xpath('//d/text()')infos=tree.xpath('//d/@p')comment=[info.split(',') for info in infos]saveme=[]# comments=[(cid,i) for i in zip(infos,message)]for i in range(len(comment)-1):# print itry:saveme.append((name,cid,comment[i][0],comment[i][1],comment[i][2],comment[i][3],comment[i][4],comment[i][5],comment[i][6],comment[i][7],message[i]))except Exception as e:print(e)continue# print savemecx.executemany('''INSERT INTO comment VALUES(?,?,?,?,?,?,?,?,?,?,?)''',saveme)cx.commit()def indexget(url):'''解析首页获取name,value,cid'''r=requests.get(url)tree=etree.HTML(r.content)name=tree.xpath('//option/text()')value=tree.xpath('//option/@value')cid=tree.xpath('//option/@cid')return [i for i in zip(name,value,cid)]        return True
if __name__ == "__main__":'''eg: python xxx.py urlpython xxx.pyurl:'http://www.bilibili.com/video/av3663007'       '''if len(sys.argv)>1:first_url = sys.argv[1] or 'http://www.bilibili.com/video/av3663007'else:first_url='http://www.bilibili.com/video/av3663007' preurl='http://www.bilibili.com'get_comment_url= indexget(first_url)for i in get_comment_url:print (i)request_get_comment(i)cx.close()

如何写一只抓哔哩哔哩弹幕的爬虫相关推荐

  1. python抓取腾讯视频弹幕_Python爬虫练习:腾讯视频弹幕数据采集

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜鸟学Python数据分析 1.网页分析 本文以爬取<脱 ...

  2. python弹幕好坏词分析_用python分析一波哔哩哔哩弹幕

    又差不多到了过年的的时候咯.不知道几年的b站拜年祭会怎么样呢? 这时让我想起了B站第一次的拜年祭,如果我没记错的话第一次拜年祭是在2015年吧.我当初也是和大伙一起看了的. 最近无聊去看了看,发现视频 ...

  3. 哔哩哔哩网页仿写总结

    哔哩哔哩网页仿写总结 神在成为神之前也是人--<头文字D>阿木 1.哔哩哔哩的分区布局真的非常美妙 2.学习到新的css知识.通过开发者工具,去模仿顶级页面的开发技巧,还有css的布局思路 ...

  4. IDEA JAVA使用BilibiliClient抓取哔哩哔哩用户动态等数据信息

    关于 一直在想办法获取哔哩哔哩的相关对象,对媒体运营数据进行自动管理,于是写了一个BiliClient的JAR包,自己使用,也分享出来,希望可以帮助大家,目前该项目已经上传GITHUB和Maven中央 ...

  5. 仿写哔哩哔哩的头部导航部分(HTML+CSS静态)

    介绍 先来看看哔哩哔哩的头部导航部分效果,B站的头部导航背景图片使用的是动态叠加(变形和动画的效果),我们可以采用静态的图片的方式来实现背景图的部分 效果 来看看我的实现效果,是不是可以非常棒? 代码 ...

  6. 从0到1000万:哔哩哔哩直播架构演进史

    本期作者 赵海林 B端技术中心资深开发工程师 01 前言 哔哩哔哩直播成立于 2014 年,经过 8 年时间的发展已经从最初的业务试水成长为公司重要的业务板块之一.技术架构也从一个单体服务演进为由数百 ...

  7. 本地播放哔哩哔哩弹幕+视频

    本地播放哔哩哔哩弹幕+视频 1.打开你喜欢或者收藏的视频播放页面 2.下载视频 方法1:一劳永逸的下载工具: IDM 方法2:利用浏览器插件的嗅探[^1]工具(不太推荐,感兴趣的可以百度学习一下) 方 ...

  8. 上班带薪打游戏?二次元的福音 在哔哩哔哩做测试员是一种什么体验?

    说起B站,小伙伴们第一个想到的是什么?二次元,手办?诚然,不知什么时候开始,B站成为了许多年轻人的聚集地和二次元的福音,从一个小的视频网站,到现在众多年轻人娱乐需求的刚需,曾经我们口中的小破站正一步一 ...

  9. Python奇淫技巧之自动登录哔哩哔哩

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 昔我往矣,杨柳依依.今我来思,雨雪 ...

最新文章

  1. sharepoint 2013 自定义列表eventhandle权限控制
  2. 给 TWebBrowser.Document 定义事件
  3. 医学图像分析最新综述:走向深度
  4. 华为云联合浙江大学构建新冠科研开放知识图谱
  5. Java IO实战操作(四)
  6. ROS下载Gazebo模型到本地
  7. 腾讯云启动 tomcat 很慢的问题
  8. python代码转java工具_Python代码转为java代码?
  9. smartadmin_smartadmin 下载_smartadmin 官网
  10. SageMath使用
  11. win10电脑安装android,Android 10安装到PC电脑上运行 PC端安装Android 10
  12. 腾讯云TVP——隐于市,惠于民
  13. 瞎琢磨先生のJava笔记之Java代码远程调用shell脚本
  14. Java计算两个时间段的天数_java计算两个时间段的精确天数
  15. 2020年下半年网络工程师下午真题及答案
  16. 深信服 星耀前端一面面经+二面凉了
  17. 无人驾驶能解决什么问题?
  18. 多元线性回归分析spss结果解读_SPSS--回归-多元线性回归模型案例解析
  19. c语言程序填空改错题,C语言模拟改错填空编程题.doc
  20. ACCESS 2003中的 LEFT JOIN

热门文章

  1. 搭建自己的ngrok服务器搭建方式二
  2. 有效的信息安全意识培训
  3. python派森app_《派森》(Python)下载
  4. win10 nuget 无法下载_随笔--博图V14仿真软件在1200项目中不能下载?
  5. String.Split
  6. 真题训练1-算法思维训练
  7. 如何用 Python 爬取网页制作电子书
  8. mysql socket socat_socat在Windows下的使用
  9. ehviewer_ehviewer
  10. Java中线程安全的List