python爬取bilibili弹幕_Python抓取BiliBili拦河坝并生成单词云,爬取,bilibili,弹幕
木秀于林,风亦惧之;虽为萤火,亦绽光芒。
Python爬取bilibili弹幕并生成词云
目标网站:
哔哩哔哩:
https://www.bilibili.com/
我这里以 TES vs SN 第四场决胜局为例:
探索经历:
首先我们要找到我们想要爬取的弹幕都发在哪:
我们先播放这个视频,随便记住一条弹幕,到审查元素里面搜索
哎,可以找到,然后我们再查看一下网页的源代码,没有搜索结果。。。。。。这说明bilibili的弹幕是动态加载的,是js请求的数据,可能是json,也可能是XML
通常我们都会通过翻页等操作让网页进行js请求,我们在“后台”盯着,看有没有多出来的文件,依次翻看一下里面的东西,看看有没有存放弹幕的文件,于是我继续播放视频,列表里也确实多了很多文件
但很可惜并没有找到我想要的存储弹幕的文件
我觉得播放视频还是没能请求到弹幕文件,于是我找到了第二种方法:(需要先登陆一下)
如图,切换不同的日期可以找到我们想要的存储弹幕文件,是个XML文件:
这样,我们就找到了目标url,复制url打开就是我们想要的弹幕页面
同样,我们也找到了规律这里有两个可以更换的参数:
(1)oid:这个就是视频的id(这个可不太好找)
(2)date:这个很明显是日期
真正目标:
思路与方法:
(1)这个XML文件也是标签语言,用BeautifulSoup可以轻松爬取,存储到本地txt文件中
(2)利用jieba库对txt内容进行分词,再合并成一个空格分割的字符串(用于Wordcloud参数)
(3)使用Wordcloud生成词云并保存到本地
部分细节讲解:
弹幕标点符号和空格的去除:
使用正则表达式可以轻松搞定:(如果有下划线可以用replace()替换成空)
barrage = re.sub('\W+','',d.text)#\W 表示匹配非数字字母下划线
jieba的cut()和lcut()方法的区别:
jieba.cut():生成的是一个生成器,generator,可以通过for循环来取里面的每一个元素
jieba.lcut():直接生成一个list
Wordcloud中文显示问题:
这个是老生常谈了,我之前有一篇博客也说过:
SimHei字体:
https://www.uslogger.com/details/3
完整代码:
import requests
import re
import os
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordCloud
def getHTMLText(url):
try:
kv = {"user-agent":"Mozilla/5.0"}
r = requests.get(url,headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
print("getHTMLText失败!")
return ""
def fillbarrages(url,path_txt):
html = getHTMLText(url)
soup = BeautifulSoup(html,'html.parser')
with open(path_txt,'a',encoding='utf-8') as f:
for d in soup.find_all("d"):
# 使用正则表达式去除空格和标点,\W 表示匹配非数字字母下划线
barrage = re.sub('\W+','',d.text)
f.write(barrage)
f.close()
def getWordCloud(path_txt,path_jpg):
barrages_cut = jieba.lcut(open(path_txt,'r',encoding='utf-8').read()) #jieba分词
barrages = " ".join(barrages_cut) #回拼成字符串并用空格分割
wc= WordCloud(
font_path=r"F:\Fonts\SimHei.ttf",
background_color="skyblue",
max_words=100,
width=1080,
height=720
)
wc.generate(barrages)
wc.to_file(path_jpg)
def main():
url = "https://api.bilibili.com/x/v1/dm/list.so?oid=249509876&date2020-10-26"
path_txt = "TESvsSN第四场.txt"
path_jpg = "TESvsSN第四场.jpg"
fillbarrages(url,path_txt)
print("fillbarrages成功")
getWordCloud(path_txt,path_jpg)
print("getwordcloud成功")
main()
词云展示:
python爬取bilibili弹幕_Python抓取BiliBili拦河坝并生成单词云,爬取,bilibili,弹幕相关推荐
- 【Python爬虫实例学习篇】——5、【超详细记录】从爬取微博评论数据(免登陆)到生成词云
[Python爬虫实例学习篇]--5.[超详细记录]从爬取微博评论数据(免登陆)到生成词云 个人博客地址:ht/tps://www.asyu17.cn/ 精彩部分提醒: (1)微博评论页详情链接为一个 ...
- 基于Scrapy框架爬取豆瓣《复联4》影评,并生成词云
基于Scrapy框架爬取豆瓣<复联4>影评,并生成词云 1. 介绍及开发环境 2. 爬虫实现 2.1 新建项目 2.2 构造请求 2.3 提取信息 2.4 数据存储 2.4 运行结果 3. ...
- python爬取学校新闻_Python抓取学院新闻报告
们发现,我们能够直接在新闻详情页面抓取到我们需要的数据:标题,时间,内容.URL. 好,到现在我们清楚抓取一篇新闻的思路了.但是,如何抓取所有的新闻内容呢? 这显然难不到我们. 我们在新闻栏目的最下方 ...
- python爬关键词百度指数_Python 抓取指定关键词的百度指数
百度指数很多时候在我们做项目的时候会很有帮助,从搜索引擎的流量端给到我们一些帮助,比如:家具行业的销量跟"装修","新房","二手房"等关键 ...
- python抓取数据包_python抓数据包
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 前言:数据科学越来越火了,网页是数据很大的一个来源. 最近很多人问怎么抓网页数据 ...
- python爬取空气质量指标_python爬虫之静态网页——全国空气质量指数(AQI)爬取
首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...
- python爬空气污染实时数据_python爬虫之静态网页——全国空气质量指数(AQI)爬取...
利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html BeautifulSoup:用于解析 下面开始分析:要获取所有城市的aqi,就要进 ...
- python爬取天气预报源代码_python抓取天气并分析 实例源码
[实例简介] Python代码抓取获取天气预报信息源码讲解.这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单.这段代码可以获取当地的天气和.任意城市的天气预报, ...
- python爬取京东图书_Python抓取京东图书评论数据
Python抓取京东图书评论数据 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Python抓取京东图书评论数据.txt ] (友情提示:右键点上行txt文档名- ...
最新文章
- 5G产业发展最新进展深度解析(144页PPT)
- php 降低图像大小,尝试在php中调整图像大小时如何处理此内存泄漏?
- zabbix 邮件报警
- Linux 技术篇-文件大小查看方法实例演示,查看指定文件大小,查看列表下所有文件夹和文件的大小
- 如何id变动自动保存html软件,Wordpress折腾小记:彻底解决ID不连续的问题-自动保存、自动修订 | 地瓜哥博客网...
- 史上最全阿里云服务器上Docker部署Springboot项目 实战 每一步都带详细图解!!!
- 大学生成绩管理系统(C语言)
- Exchange2007 从零到入门(2)---收件人管理
- 24c语言程序设计是啥,《C语言程序设计》作业答案.docx
- android动画放大后缩小,Android 补间动画 scale(缩放)
- HQL - Hibernate查询语言 - 示例教程
- 二维数组各行求和_数组入门 | 数组的维度和尺寸
- 饭局潜规则,吃饭时的最大忌讳,就是低头玩手机
- 自定义日历控android,android 一个简单的自定义日历控件,让你掌控时间
- Angr安装与使用之使用篇(十)
- linu修改open files无效_安卓容器app如何使用 容器app修改机型方法【详解】
- android运行xwalkview闪退,解决Android中集成XWalkView的奇怪闪退
- 传感网应用开发(中级)网络协议报文详解
- his系统管理工具配置服务器,HIS系统(his管理系统)V3.0.1 官网版
- java word文件转图片
热门文章
- 什么叫矫顽力(bHc)、内禀矫顽力(jHc) 及钕铁硼磁性能表
- 视频教程-【吴刚】AI(Adobe Illustrator)软件应用标准视频教程-UI
- 微信开发模式下自定义菜单配置
- 【组合数学】排列组合 ( 两个计数原则、集合排列示例 | 集合排列、圆排列示例 )
- java Servlet内存马
- 计算机主板电池没电什么情况,电脑主板电池没电会怎样_电脑主板电池没电有什么后果如何解决...
- 中国铁路轮轴行业市场供需与战略研究报告
- 2行Python就能实现 文本文件 差异比较,太强了!
- NETTY-Netty的粘包和半包
- K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统