精华内容
下载资源
问答
  • 先来思考一个问题,B站一个视频的弹幕最多会有多少?比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,你...

    先来思考一个问题,B站一个视频的弹幕最多会有多少?

    比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。

    也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,你如果直接去requests.get这个地址,里面是不会有弹幕的,回想第一篇说到的携程异步加载数据的方式,B站的弹幕也一定是先加载当前视频的界面,然后再异步填充弹幕的。

    接下来我们就可以打开火狐浏览器(平常可以火狐谷歌控制台都使用,因为谷歌里面因为插件被拦截下来的包在火狐可以抓到,同理谷歌也是)的控制台来观察网络请求了。

    经过仔细排查之后,我找到了一个请求xml的,它后面跟了一个oid,查看它的响应内容之后可以发现它就是弹幕文件。

    19101349101798513948813508.png

    它的响应时间98毫秒,远超其它几个响应,所以说如果把弹幕直接放在视频页面,用户体验一定会很差。

    19101349101886361804993823.png

    找到弹幕了,爬取它很容易,但是我们想要是爬取固定av号视频的弹幕,而不是说随意去找一个oid来爬取弹幕,这样我们都不知道爬下来的弹幕是哪个视频的。

    接下来我们就可以复制oid的117784982值,去视频页面搜索看看了,通过视频来获得它的oid再来爬xml弹幕就很方便了。

    这次用了谷歌浏览器,在里面通过搜索oid果然搜索到相关的数据了。

    19101349102034509651126795.png

    其中cid是弹幕对应的id,aid对应视频av号。

    先把这个页面爬取下来。

    # encoding: utf-8

    import requests

    headers = {

    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',

    'Accept': 'text/html',

    'Cookie': "_uuid=1DBA4F96-2E63-8488-DC25-B8623EFF40E773841infoc; buvid3=FE0D3174-E871-4A3E-877C-A4ED86E20523155831infoc; LIVE_BUVID=AUTO8515670521735348; sid=l765gx48; DedeUserID=33717177; DedeUserID__ckMd5=be4de02fd64f0e56; SESSDATA=cf65a5e0%2C1569644183%2Cc4de7381; bili_jct=1e8cdbb5755b4ecd0346761a121650f5; CURRENT_FNVAL=16; stardustvideo=1; rpdid=|(umY))|ukl~0J'ulY~uJm)kJ; UM_distinctid=16ce0e51cf0abc-02da63c2df0b4b-5373e62-1fa400-16ce0e51cf18d8; stardustpgcv=0606; im_notify_type_33717177=0; finger=b3372c5f; CURRENT_QUALITY=112; bp_t_offset_33717177=300203628285382610"

    }

    resp = requests.get('https://www.bilibili.com/video/av67946325',headers=headers)

    print(resp.text)

    拿到了内容我们就要从中解析弹幕id了,对于这种规则紊乱的网页,我们就不能用上一篇中Bs4解析了,而是使用正则表达式。

    正则表达式最简单的使用方式其实就是直接match。

    re.search(匹配规则,文本).group()

    19101349102136516924459605.png

    观察这里的内容,我们大致的匹配规则就有了。

    cid={目标}&aid=av号

    117784982就是我们的目标。

    av_id = '67946325'

    resp = requests.get('https://www.bilibili.com/video/av'+av_id,headers=headers)

    match_rule = r'cid=(.*?)&aid'

    oid = re.search(match_rule,resp.text).group().replace('cid=','').replace('&aid','')

    print('oid='+oid)

    先根据av号拿到视频页面,然后解析视频页面拿到oid,最后用oid去请求xml弹幕文件。

    xml_url = 'https://api.bilibili.com/x/v1/dm/list.so?oid='+oid

    resp = requests.get(xml_url,headers=headers)

    print(resp)

    这样我们就完成B站弹幕爬虫了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    展开全文
  • 主要介绍了Python爬虫爬取Bilibili弹幕过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Python爬虫 bilibili视频弹幕提取过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python爬虫腾讯视频弹幕(目前可用)
  • 先来思考一个问题,B站一个视频的弹幕最多会有多少?比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,你...

    先来思考一个问题,B站一个视频的弹幕最多会有多少?

    比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。

    也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,你如果直接去requests.get这个地址,里面是不会有弹幕的,回想第一篇说到的携程异步加载数据的方式,B站的弹幕也一定是先加载当前视频的界面,然后再异步填充弹幕的。

    接下来我们就可以打开火狐浏览器(平常可以火狐谷歌控制台都使用,因为谷歌里面因为插件被拦截下来的包在火狐可以抓到,同理谷歌也是)的控制台来观察网络请求了。

    经过仔细排查之后,我找到了一个请求xml的,它后面跟了一个oid,查看它的响应内容之后可以发现它就是弹幕文件。

    2019101095326411.png?201991095416

    它的响应时间98毫秒,远超其它几个响应,所以说如果把弹幕直接放在视频页面,用户体验一定会很差。

    2019101095326412.png?201991095416

    找到弹幕了,爬取它很容易,但是我们想要是爬取固定av号视频的弹幕,而不是说随意去找一个oid来爬取弹幕,这样我们都不知道爬下来的弹幕是哪个视频的。

    接下来我们就可以复制oid的117784982值,去视频页面搜索看看了,通过视频来获得它的oid再来爬xml弹幕就很方便了。

    这次用了谷歌浏览器,在里面通过搜索oid果然搜索到相关的数据了。

    2019101095326413.png?201991095416

    其中cid是弹幕对应的id,aid对应视频av号。

    先把这个页面爬取下来。

    # encoding: utf-8

    import requests

    headers = {

    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',

    'Accept': 'text/html',

    'Cookie': "_uuid=1DBA4F96-2E63-8488-DC25-B8623EFF40E773841infoc; buvid3=FE0D3174-E871-4A3E-877C-A4ED86E20523155831infoc; LIVE_BUVID=AUTO8515670521735348; sid=l765gx48; DedeUserID=33717177; DedeUserID__ckMd5=be4de02fd64f0e56; SESSDATA=cf65a5e0%2C1569644183%2Cc4de7381; bili_jct=1e8cdbb5755b4ecd0346761a121650f5; CURRENT_FNVAL=16; stardustvideo=1; rpdid=|(umY))|ukl~0J'ulY~uJm)kJ; UM_distinctid=16ce0e51cf0abc-02da63c2df0b4b-5373e62-1fa400-16ce0e51cf18d8; stardustpgcv=0606; im_notify_type_33717177=0; finger=b3372c5f; CURRENT_QUALITY=112; bp_t_offset_33717177=300203628285382610"

    }

    resp = requests.get('https://www.bilibili.com/video/av67946325',headers=headers)

    print(resp.text)

    拿到了内容我们就要从中解析弹幕id了,对于这种规则紊乱的网页,我们就不能用上一篇中Bs4解析了,而是使用正则表达式。

    正则表达式最简单的使用方式其实就是直接match。

    re.search(匹配规则,文本).group()

    2019101095326414.png?201991095416

    观察这里的内容,我们大致的匹配规则就有了。

    cid={目标}&aid=av号

    117784982就是我们的目标。

    av_id = '67946325'

    resp = requests.get('https://www.bilibili.com/video/av'+av_id,headers=headers)

    match_rule = r'cid=(.*?)&aid'

    oid = re.search(match_rule,resp.text).group().replace('cid=','').replace('&aid','')

    print('oid='+oid)

    先根据av号拿到视频页面,然后解析视频页面拿到oid,最后用oid去请求xml弹幕文件。

    xml_url = 'https://api.bilibili.com/x/v1/dm/list.so?oid='+oid

    resp = requests.get(xml_url,headers=headers)

    print(resp)

    这样我们就完成B站弹幕爬虫了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • python爬虫爬取B站弹幕

    千次阅读 2021-01-23 20:55:03
    )') file=open("输入你存入网站内容的文件名","r",encoding="utf-8") text=file.read() data=re.findall(danmu,text) File=open("输入你想要创建的文件名,弹幕信息将会被存储在这里","a",encoding="utf-8") for i ...

    因为本人技术有限,无法实现一步到位,所以分两步实现。
    第一步:
    1.首先需要准备需要的库。
    import re
    import requests
    import urllib
    import bs4
    2.就直接上代码。

    import re
    import requests
    import urllib
    import bs4
    def main():
        url = "此处输入你要爬取的视频的当前网址"
        datalist = get_html(url)
        cid = saveurl(datalist)
        dmurl='https://comment.bilibili.com/'+cid+'.xml'
        print('请点击此网站:',dmurl)
    def get_html(url):
        headers = {
            'User-Agent': '输入自己的User-Agent'
        }         #请输入你个人的User-Agent
        response = requests.get(url, headers=headers)
        return response.text
    def saveurl(baseurl):
        findlink=re.compile(r'"cid":(.*?),"bvid":')
        cid = re.findall(findlink,baseurl)
        cid = list(cid)[1]
        return cid
    if __name__ =="__main__":
        main()
        print("爬取完毕")
    

    3.如何获取User-Agent。
    打开你要爬取的网页,按 F12 打开开发者模式
    在这里插入图片描述
    然后刷新网页。并迅速点击红色圆圈按钮暂停。
    在这里插入图片描述
    将鼠标放在绿色线条的最左侧(还是在绿色线上),然后左键单击它

    在这里插入图片描述
    点击www.bilibili.com的文件,对,就是那个剩下的文件。
    在这里插入图片描述
    然后在你文件的最最最下面,就出现了你的User-Agent,因为名字我都帮大家写好了,所以大家只用将冒号后面的内容复制粘贴进去就可以了。
    4.运行代码,会打印出一个网站,里面就是你要的弹幕,但是还需要进行数据处理(我多次尝试用不同的解码方式去读取,都显示的是一堆乱码,希望有大佬,可以指点!
    第二步:
    1.将爬取到的网站中的所有信息,复制粘贴进一个txt文件中。
    2.上代码。

    import re
    danmu=re.compile(r'<d p=".*">(.*?)</d>')
    file=open("输入你存入网站内容的文件名","r",encoding="utf-8")
    text=file.read()
    data=re.findall(danmu,text)
    File=open("输入你想要创建的文件名,弹幕信息将会被存储在这里","a",encoding="utf-8")
    for i in data:
        File.writelines(i)
        File.writelines("\n")
    File.close()
    file.close()
    

    3.将你的文件名都填入代码中,然后运行。弹幕就被存入文件了。

    展开全文
  • 最近有朋友在群上面说做个b站某视频的弹幕统计列表,筛选出弹幕最多的那条!那么如何解决这个问题呢?首先肯定是要获取弹幕的列表吧,然后再进行分析吧。筛选出弹幕最多的那条,这个好办用collections可以解决,那么...

    最近有朋友在群上面说做个b站某视频的弹幕统计列表,筛选出弹幕最多的那条!那么如何解决这个问题呢?首先肯定是要获取弹幕的列表吧,然后再进行分析吧。筛选出弹幕最多的那条,这个好办用collections可以解决,那么关键的问题应该就在怎么获取b站的弹幕列表了吧。

    开发环境:

    window7+chrome

    idea+python插件

    requests+json+beautifulsoup+collections

    那解决步骤如下:

    解析视频播放页面链接

    查找弹幕资源所在地

    数据分析 (collections.Counter)

    数据存储(file)

    导出exe

    解析视频播放页资源,查找弹幕资源所在

    查看下html网页源文件是否包含着弹幕的资源快捷键ctrl+u,选择其中的弹幕内容,发现不存在

    按f12+选择network这个tab查看页面加载的时候的js链接处理

    933a5a9aba52?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    我们发现弹幕的内容包括在一个xml文件里面,对,而且还没有分页的处理

    933a5a9aba52?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    那么下一步就是找到这个数字所对应的链接了

    933a5a9aba52?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    https://api.bilibili.com/x/player/pagelist?aid={}&jsonp=jsonp.format("av号")

    定代码架构:

    def get_movie_url(av):pass #获取cid

    def get_barrage_list(url):pass #获取列表

    def get_barrage_count(list):pass #获取筛选数值

    def write_text(content):pass #写进文本

    写py代码

    l_list = []

    def get_movie_url(av):

    response = requests.get(url_get_comment_cid.format(str(av)))

    content = response.content.decode(response.encoding)

    content = json.loads(content)

    for d in content.get('data'):

    cid = d.get('cid')

    get_content(cid)

    print("共有{}条弹幕".format(len(l_list)))

    count = collections.Counter(l_list).most_common()

    writetest(av, l_list)

    writetest(str(av) + "count", count)

    def get_barrage_list(cid):

    response = requests.get(url_get_comment.format(str(cid)))

    content = response.content.decode(response.encoding)

    b = bs(content, 'xml')

    for i in b.findChildren('d'):

    l_list.append(i.text)

    def write_text(av, l):

    with open(str(av) + '.txt', 'w+', encoding='utf-8') as f:

    for i in l:

    f.write(str(i)+"\n")

    使用pyInstanller导出exe

    安装pyInstaller ,pip install pyinstaller 最新版本是3.3.1

    pyinstaller -F py文件路径

    生成exe文件,打开运行,至于下一步想导入excel

    933a5a9aba52?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    好的,就这样写完了。。。

    展开全文
  • 我的B站教学:https://www.bilibili.com/video/av75377135?p=2工作原理b站是提供弹幕接口的,所以我们的整体操作进行如下:1.到B站获取cid2.将cid与网站固定格式进行链接3.用python请求网页4.进行简单的单词处理5....
  • 一、写在前面之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样一个简单的尝试,从搭建环境到跑通demo,不懂语法,不知含义,装好环境,查到API,跑通Demo,就是目标!...
  • 获取弹幕的url是以 .xml 结尾2.弹幕url的所需参数在视频url响应的 javascript 中先看代码import requestsfrom lxml import etreeimport re# 使用手机UAheaders = {"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone ...
  • 获取弹幕的url是以 .xml 结尾2.弹幕url的所需参数在视频url响应的 javascript 中先看代码import requestsfrom lxml import etreeimport re# 使用手机UAheaders = {"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone ...
  • 先来思考一个问题,B站一个视频的弹幕最多会有多少?比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。也就是说,有一个视频地址为https://www.bilibili.com/vide...,你如果直接去...
  • Bilibili弹幕爬取 分析与弹幕相关的内容 BilibiliSpider源码 run.py 结果截图 QQ音乐热评爬取 QQ音乐热评爬取源码 run.py settting.py 结果截图: 结语: 前言 爬虫的方法很多比如用requests,beautifulsoup,scrapy这些...
  • 【kimol君的无聊小发明】—用python爬取B站弹幕(无数量限制)前言一、弹幕抓取(有数量限制)二、弹幕抓取(无数量限制)写在最后 前言 某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~ 当我打开文件夹以...
  • 前言主要记录自己完成爬虫的思路:从how to do到what to do这是一个拿 python 练手的项目,虽说是入门级,... 弹幕究竟是什么玩意首先,让我们看看B站客户端是如何接收到弹幕的这就需要让我们看看网页的源代码了随便...
  • python爬虫(爬取弹幕

    千次阅读 2018-09-12 20:38:09
    先在页面中,找到弹幕所在位置,将 url 找出来,然后写 headers,用来爬取数据,数据需要解码。 三、用正则匹配数据,之后将数据写入txt 文档中 pattern=re.compile( r'*?>(.*?)</d>' ) data_list=pattern....
  • 准备工作 下载安装python https://www.python.org/ 下载python并安装,本文章基于python 3.8.1 idea安装python插件 ...idea找到settings,进入并搜索python插件安装。...至于B站弹幕爬虫,我们...
  • Python爬取B站弹幕方法介绍

    千次阅读 多人点赞 2020-08-04 21:47:46
    文章目录Python爬取B站弹幕方法介绍前言寻找弹幕数据编写爬虫B站弹幕数量新技术介绍参考文章 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数据做分析,于是请我帮忙爬取 B 站视频的弹幕数据。 对于爬虫而言...
  • python爬虫:bilibili弹幕爬取+词云生成

    万次阅读 多人点赞 2019-11-11 01:53:56
    这样一个完整的弹幕list就已经有了,这里要注意,b站弹幕提取上线是1000条,所以大于一千的就会随机选取1000调弹幕给你。 4.进行简单的单词处理 拿到之后的弹幕并不能直接满足我们进行单词分析,我们要进行一些...
  • Python爬虫:AcFun弹幕视频网

    千次阅读 多人点赞 2020-10-18 14:35:29
    A视频、番剧,最高清晰度,统统拿下!!!
  • python爬虫爬取bilibili弹幕数据

    千次阅读 2017-09-28 20:22:53
    # 获取弹幕数据的cid self.cid = None # 弹幕数据 self.items = None # name解析 self.names = None # mongo self.db = pymongo.MongoClient(MONGO_URI)[MONGO_DB] # 获取aid def get_...
  • 我们会发现,弹幕列表一栏对应的网页结构并不是我们想抓取的弹幕文件,那么弹幕文件在哪那?很简单,由于弹幕是滚动播放的,所以有一个快速找到弹幕文件的方法。在开发者工具中点击network。重新...
  • 分析网页视频地址:https://www.bilibili.com/video/BV19E411W7BE本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀。这次我选取的是自己唯一的爆款视频。就是下面这个。希望大家...
  • 可以看我之前写的这篇文章:10行代码下载B站弹幕 代码 '''依赖模块 pip install requests ''' import re import requests url = input('请输入B站视频链接: ') res = requests.get(url) cid = re.findall(r'"cid":...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,925
精华内容 770
关键字:

python爬虫b站弹幕

python 订阅
爬虫 订阅