木秀于林,风亦惧之;虽为萤火,亦绽光芒。

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,弹幕相关推荐

  1. 【Python爬虫实例学习篇】——5、【超详细记录】从爬取微博评论数据(免登陆)到生成词云

    [Python爬虫实例学习篇]--5.[超详细记录]从爬取微博评论数据(免登陆)到生成词云 个人博客地址:ht/tps://www.asyu17.cn/ 精彩部分提醒: (1)微博评论页详情链接为一个 ...

  2. 基于Scrapy框架爬取豆瓣《复联4》影评,并生成词云

    基于Scrapy框架爬取豆瓣<复联4>影评,并生成词云 1. 介绍及开发环境 2. 爬虫实现 2.1 新建项目 2.2 构造请求 2.3 提取信息 2.4 数据存储 2.4 运行结果 3. ...

  3. python爬取学校新闻_Python抓取学院新闻报告

    们发现,我们能够直接在新闻详情页面抓取到我们需要的数据:标题,时间,内容.URL. 好,到现在我们清楚抓取一篇新闻的思路了.但是,如何抓取所有的新闻内容呢? 这显然难不到我们. 我们在新闻栏目的最下方 ...

  4. python爬关键词百度指数_Python 抓取指定关键词的百度指数

    百度指数很多时候在我们做项目的时候会很有帮助,从搜索引擎的流量端给到我们一些帮助,比如:家具行业的销量跟"装修","新房","二手房"等关键 ...

  5. python抓取数据包_python抓数据包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 前言:数据科学越来越火了,网页是数据很大的一个来源. 最近很多人问怎么抓网页数据 ...

  6. python爬取空气质量指标_python爬虫之静态网页——全国空气质量指数(AQI)爬取

    首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...

  7. python爬空气污染实时数据_python爬虫之静态网页——全国空气质量指数(AQI)爬取...

    利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html BeautifulSoup:用于解析 下面开始分析:要获取所有城市的aqi,就要进 ...

  8. python爬取天气预报源代码_python抓取天气并分析 实例源码

    [实例简介] Python代码抓取获取天气预报信息源码讲解.这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单.这段代码可以获取当地的天气和.任意城市的天气预报, ...

  9. python爬取京东图书_Python抓取京东图书评论数据

    Python抓取京东图书评论数据 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python抓取京东图书评论数据.txt ] (友情提示:右键点上行txt文档名- ...

最新文章

  1. 5G产业发展最新进展深度解析(144页PPT)
  2. php 降低图像大小,尝试在php中调整图像大小时如何处理此内存泄漏?
  3. zabbix 邮件报警
  4. Linux 技术篇-文件大小查看方法实例演示,查看指定文件大小,查看列表下所有文件夹和文件的大小
  5. 如何id变动自动保存html软件,Wordpress折腾小记:彻底解决ID不连续的问题-自动保存、自动修订 | 地瓜哥博客网...
  6. 史上最全阿里云服务器上Docker部署Springboot项目 实战 每一步都带详细图解!!!
  7. 大学生成绩管理系统(C语言)
  8. Exchange2007 从零到入门(2)---收件人管理
  9. 24c语言程序设计是啥,《C语言程序设计》作业答案.docx
  10. android动画放大后缩小,Android 补间动画 scale(缩放)
  11. HQL - Hibernate查询语言 - 示例教程
  12. 二维数组各行求和_数组入门 | 数组的维度和尺寸
  13. 饭局潜规则,吃饭时的最大忌讳,就是低头玩手机
  14. 自定义日历控android,android 一个简单的自定义日历控件,让你掌控时间
  15. Angr安装与使用之使用篇(十)
  16. linu修改open files无效_安卓容器app如何使用 容器app修改机型方法【详解】
  17. android运行xwalkview闪退,解决Android中集成XWalkView的奇怪闪退
  18. 传感网应用开发(中级)网络协议报文详解
  19. his系统管理工具配置服务器,HIS系统(his管理系统)V3.0.1 官网版
  20. java word文件转图片

热门文章

  1. 什么叫矫顽力(bHc)、内禀矫顽力(jHc) 及钕铁硼磁性能表
  2. 视频教程-【吴刚】AI(Adobe Illustrator)软件应用标准视频教程-UI
  3. 微信开发模式下自定义菜单配置
  4. 【组合数学】排列组合 ( 两个计数原则、集合排列示例 | 集合排列、圆排列示例 )
  5. java Servlet内存马
  6. 计算机主板电池没电什么情况,电脑主板电池没电会怎样_电脑主板电池没电有什么后果如何解决...
  7. 中国铁路轮轴行业市场供需与战略研究报告
  8. 2行Python就能实现 文本文件 差异比较,太强了!
  9. NETTY-Netty的粘包和半包
  10. K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统