Python如何爬取视频网站弹幕并做成词云图

  介绍

这篇文章将为大家详细讲解有关Python如何爬取视频网站弹幕并做成词云图、文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

大家好,最近的“瓜”,多到我们措手不及,可谓是“热点不断”。作为程序员,我们还可能随时为此而加班。

各种评论视频”爆炸”网络,打开首页全是热点话题的内容,某知名了主发布视频都要错下峰。

我就在思考:这么火爆的话题和内容,有没有一种通用的分析方法?答案是:抓取弹幕或者评论。

下面就让我们以冰冰视频博客的视频弹幕为例,来进行分析。

<强>一、获取方法

1。网页解析:网页结构可能随时会发生变化。

2. Python第三方api:可能会有维护跟不上的问题。

经过简单对比,我选择第一种方法。

<强>二、网页分析

爬取弹幕的关键是获取视频的cid,有些地方也叫oid。通过浏览器的开发者模式我们不难找到该视频的cid。我们通过https://comment.bilibili.com/+视频的cid + xml就可以爬取该视频所有弹幕了。

 Python如何爬取视频网站弹幕并做成词云图

<强>三,弹幕文件下载和解析

由于弹幕内容集中在xml文件里,我们需要对文件进行下载,使用xpath解析文件。

<>之前得到lxml  import  etree   import 请求   import 时间   import  jieba   import  numpy  as  np   得到PIL  import 形象   得到wordcloud  import  wordcloud  as  wc   class  Bilibili ():   ,,,“““docstring  for  Bilibili"““   ,,,def  __init__(自我,oid):   ,,,,,,,self.headers={   ,,,,,,,& # 39;主机# 39;:,& # 39;api.bilibili.com& # 39;   ,,,,,,,& # 39;连接# 39;:,& # 39;保活# 39;   ,,,,,,,& # 39;cache - control # 39;:, & # 39;信息=0 & # 39;   ,,,,,,,& # 39;Upgrade-Insecure-Requests& # 39;:, & # 39; 1 & # 39;   ,,,,,,,& # 39;用户代理# 39;:,& # 39;Mozilla/5.0, (Windows  NT  10.0;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/69.0.3497.92  Safari/537.36 & # 39;   ,,,,,,,& # 39;接受# 39;:,& # 39;text/html, application/xhtml + xml应用程序/xml; q=0.9,图像/webp图像/apng */*; q=0.8 & # 39;   ,,,,,,,& # 39;Accept-Encoding& # 39;:, & # 39; gzip、,缩小,,br # 39;   ,,,,,,,& # 39;接收语言# 39;:,& # 39;应用,zh型;q=0.9 & # 39;   ,,,,,,,& # 39;饼干# 39;:,& # 39;手指=edc6ecda;, LIVE_BUVID=AUTO1415378023816310;, stardustvideo=1;, CURRENT_FNVAL=8;, buvid3=0 d8f3d74 - 987 d - 442 d - 99 - cf - 42 - bc9a967709149017infoc;, rpdid=olwimklsiidoskmqwipww;, fts=1537803390 & # 39;      ,,,,,,,}   ,,,,,,,self.url=& # 39; https://api.bilibili.com/x/v1/dm/list.so?oid=& # 39; + str (oid)   ,,,,,,,self.barrage_reault=self.get_page ()      ,,,#,获取信息   ,,,def  get_page(自我):   ,,,,,,,试一试:   ,,,,,,,,,,,#,延时操作,防止太快爬取   ,,,,,,,,,,,time . sleep (0.5)   ,,,,,,,,,,,反应=requests.get (self.url、头=self.headers)   ,,,,,,,except  Exception  as  e:   ,,,,,,,,,,,印刷(& # 39;获取xml内容失败,% & # 39;,%,e)   ,,,,,,,,,,,return 错误的   ,,,,,,,其他的:   ,,,,,,,,,,,if  response.status_code ==, 200:   ,,,,,,,,,,,,,,,#,下载xml文件   ,,,,,,,,,,,,,,,with 开放(& # 39;bilibili.xml& # 39; & # 39; wb # 39;), as  f:   ,,,,,,,,,,,,,,,,,,,f.write (response.content)   ,,,,,,,,,,,,,,,return 真实的   ,,,,,,,,,,,其他的:   ,,,,,,,,,,,,,,,return 错误的      ,,,#,解析网页   ,,,def  param_page(自我):   ,,,,,,,time . sleep (1)   ,,,,,,,if , self.barrage_reault:   ,,,,,,,,,,,#,文件路径,html解析器   ,,,,,,,,,,,html=etree.parse (& # 39; bilibili.xml& # 39;, etree.HTMLParser ())   ,,,,,,,,,,,#,xpath解析,获取当前所有的d标签下的所有文本内容   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python如何爬取视频网站弹幕并做成词云图