Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!

是这样的,这几天奥运会,我忍不住想起了北京奥运会开幕式的壮观,在b站回看了2008年我们北京奥运会的开幕式,看到这满屏的打卡,内心引起强烈的共鸣,深有感触
Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!_第1张图片
这时候我不禁想,在这b站里面,到底有多少人是从东京奥运会来的呢,话不多说,马上用 requests 和 pyquery 开始爬取弹幕。

首先

安装 requests 和 pyquery 库:

pip install requests
pip inatall pyquery

导入:

import requests
from pyquery import PyQuery as pq

网页分析

首先来到b站搜索北京奥运会,进入视频,网址:
https://www.bilibili.com/video/BV1AN411Z7wf

右键菜单点击检查元素,进入Network(网络)栏,开始录制。

这时候我们展开历史弹幕,可以看到出现了许多以seg.so开头的链接,其中oid后跟着的就是我们这个视频的 oid 。
Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!_第2张图片
不过由于弹幕太多,我展开历史弹幕时,整个网页都卡了(不过这也侧面衬托出了北京奥运会开幕式的精彩与震撼)
Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!_第3张图片
如果你不想遇到这样子的情况,你也可以刷新网页,看到以一串数字开头的链接,这串数字就是 oid:
Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!_第4张图片
接下来把 oid 拼接到弹幕API,就能得到弹幕的xml地址,我们通过这个地址发送请求获取弹幕:

https://api.bilibili.com/x/v1/dm/list.so?oid=373384747

3. 发送请求

进入API我们可以看到这样子:
Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!_第5张图片
我们直接用 get 来获取HTML:

url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=373384747' # 网址
headers = {
     'cookie': 'bsource=...'} # 请求头
result = requests.get(url, headers=headers)
result.encoding='utf-8'

获取到HTML文件后,我们用 pyquery 寻找d节点,即含有弹幕内容的节点:

html = pq(result.content) # content 返回服务器响应数据的原始二进制字节流
l = html.find('d') # 寻找 d节点,返回一个迭代器

接下来我们遍历 l,打印出弹幕内容试试:

for i in l:
    print(i.text) # 获取i的文本内容

Python爬虫 | 爬取b站北京奥运会开幕式弹幕,我不得不说中国牛逼!!!_第6张图片
可以看到我们已经获得了所有弹幕,现在我以“2021”、“日本”、“东京”为关键词,统计包含这些词的弹幕数量。

num = int()

for i in l:
    if '2021' in i.text or '东京' in i.text or '日本' in i.text:
        num += 1

print(len(l))
print(num)
print(str(round(num/len(l), 3)) + '%')

结果

结果
不知道是什么原因,我发现爬取到的弹幕数量与视频下面显示的弹幕数量并不一致。但我们可以看到,有超过十分之一的弹幕是从东京奥运会来的。这足以看出,2008年我们北京奥运会开幕式有多么壮观与精彩,人们多么喜欢这一届的奥运会。

我们曾以为我们能够举办一届奥运会是我们的荣耀,但后来才发现,能拥有这样的一届,是奥运会的荣耀。

最后,祝愿在东京奥运会的中国奥运代表团能够平安胜利归来!

中国加油!!!


2021/7/27

推荐阅读

  • 绝密!Python爬虫告诉你刷分机器人背后的原理!这篇文章差点没过审
  • Python爬虫从0到1 | 入门实战:360翻译 ——requests库之POST方法(新手必看,保姆级别教学)
  • 没想到我连五年级的题目都解不出来?可不能被人小看,让万能的Python登场
  • Python:程序猿怎么追女生?教你短短几行代码表白,告别表白尴尬!
  • 学习笔记 | Python中datetime库的使用——获取时间、时间操作方法总结(date、time、datetime、timedelta和timezone类) 一文读懂,建议收藏!

你可能感兴趣的:(Python,#,Python爬虫,#,Python,那些事,python,request,爬虫,api)