Python爬虫入门教程05:B站视频弹幕的爬取

本文介绍了Python爬虫入门教程,包括如何爬取二手房数据和招聘信息,以及在Bilibili网站上使用正则表达式解析和处理乱码的弹幕数据。同时,还涉及到了数据持久化的保存方法。
摘要由CSDN通过智能技术生成

Python爬虫入门教程03:二手房数据爬取

Python爬虫入门教程04:招聘信息爬取

PS:如有需要 Python学习资料 以及 解答 的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

基本开发环境💨


  • Python 3.6

  • Pycharm

相关模块的使用💨


  • requests

  • re

安装Python并添加到环境变量,pip安装需要的相关模块即可。

一、💥明确需求


找一个弹幕比较多的视频爬取

在这里插入图片描述

在这里插入图片描述

二、💥网页数据分析


以前的B站弹幕视频,点击查看历史的弹幕,会给你返回一个json数据,包含了所有的弹幕内容。

现在点击历史弹幕数据,同样是有数据加载出来,但是里面的都是乱码了。

在这里插入图片描述

在这里插入图片描述

请求这个链接还是会得到想要的数据内容。

在这里插入图片描述

只需要使用正则表达匹配中文字符就可以匹配出来

三、💥解析数据并多页爬取


弹幕分页是根据日期来的,当点击 2021-01-01 的使用,返回的给我的数据并不是弹幕数据,而是所有的日期。

在这里插入图片描述

那么看到这里有人就会问了,那我想要爬取 2021-01-01 的弹幕数据怎么办?

在这里插入图片描述

这两个的url地址是不一样的,seg.so 才是弹幕数据url地址。

import requests

import re

def get_response(html_url):

headers = {

‘cookie’: ‘你自己的cookie’,

‘origin’: ‘https://www.bilibili.com’,

‘referer’: ‘https://www.bilibili.com/video/BV19E41197Kc’,

‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36’,

}

response = requests.get(url=html_url, headers=headers)

return response

def get_date(html_url):

response = get_response(html_url)

json_data = response.json()

date = json_data[‘data’]

print(date)

return date

if name == ‘main’:

one_url = ‘https://api.bilibili.com/x/v2/dm/history/index?type=1&oid=120004475&month=2021-01’

get_date(one_url)

返回的数据是json数据,根据字典键值对取值就可以得到相关数据。

在这里插入图片描述

四、💥保存数据(数据持久化)


def main(html_url):

data = get_date(html_url)

for date in data:

url = f’https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=120004475&date={date}’

html_data = get_response(url).text

result = re.findall(“.?([\u4E00-\u9FA5]+).?”, html_data)

for i in result:

with open(‘B站弹幕.txt’, mode=‘a’, encoding=‘utf-8’) as f:

f.write(i)

f.write(‘\n’)

在这里插入图片描述

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Python爬取B站视频弹幕并制作成地图词云展示,需要几个步骤:首先抓取网页数据,然后处理弹幕内容,最后生成词云并将其放在地图上。这里是一个简化的示例,假设我们使用了`requests`、`BeautifulSoup`库用于网络请求和HTML解析,`lxml`库作为BeautifulSoup的一个替代选择,`wordcloud`和`geopandas`库来创建词云和地图,以及`pyecharts`库来展示地图。 ```python import requests from bs4 import BeautifulSoup import re import pandas as pd from wordcloud import WordCloud import geopandas as gpd from pyecharts import options as opts from pyecharts.charts import Map # 爬取B站弹幕数据 def get_bilibili_danmu(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') danmu_list = soup.select('.d-share .d-mid .c-danmu-item') # 提取丹字列表 return [danmu.text for danmu in danmu_list] # 清理并统计词频 def process_danmu(danmus): cleaned_danmus = [re.sub(r'\W+', '', danmu) for danmu in danmus] # 去除标点符号和空格 frequency = {word: cleaned_danmus.count(word) for word in set(cleaned_danmus)} return frequency # 创建词云 def create_wordcloud(frequency): wc = WordCloud(font_path='simhei.ttf', width=800, height=600, background_color='white').generate_from_frequencies(frequency) return wc.to_image() # 获取中国省份信息 china_province_data = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) # 使用词云数据绘制地图 def map_with_wordcloud(province_data, wordcloud_img): chart = Map() chart.add("", province_data['name'], china_province_data.geometry, maptype="China") img_option = opts.ImageOption(src=wordcloud_img) chart.options设置 = { "visualMap": { "max": max(frequency.values()), "inRange": {"symbolSize": [5, 10]}, }, "series": [{"type": "map", "label": {"show": False}, "itemStyle": img_option}] } chart.render("bilibili_danmu_map.html") # 示例用法 url = "https://www.bilibili.com/video/BV某个视频ID" # 替换为实际的视频URL danmus = get_bilibili_danmu(url) frequency = process_danmu(danmus) wordcloud_img = create_wordcloud(frequency) map_with_wordcloud(china_province_data, wordcloud_img)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值