介绍
这篇文章将为大家详细讲解有关Python如何爬取视频网站弹幕并做成词云图、文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
大家好,最近的“瓜”,多到我们措手不及,可谓是“热点不断”。作为程序员,我们还可能随时为此而加班。
各种评论视频”爆炸”网络,打开首页全是热点话题的内容,某知名了主发布视频都要错下峰。
我就在思考:这么火爆的话题和内容,有没有一种通用的分析方法?答案是:抓取弹幕或者评论。
下面就让我们以冰冰视频博客的视频弹幕为例,来进行分析。
<强>一、获取方法强>
1。网页解析:网页结构可能随时会发生变化。
2. Python第三方api:可能会有维护跟不上的问题。
经过简单对比,我选择第一种方法。
<强>二、网页分析强>
爬取弹幕的关键是获取视频的cid,有些地方也叫oid。通过浏览器的开发者模式我们不难找到该视频的cid。我们通过https://comment.bilibili.com/+视频的cid + xml就可以爬取该视频所有弹幕了。
<强>三,弹幕文件下载和解析强>
由于弹幕内容集中在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