在线观看视频网站源码2021

哔哩哔哩的弹幕区一直是人才的圣地。今天我就用python来教大家如何爬上哔哩哔哩排行榜的前几名视频,Python可以这么轻松的爬上视频。

在线观看视频网站源码2021插图

网站分析

在哔哩哔哩,只要视频中有弹幕,就会有cid参数。Cid用来表示一个视频对应的弹幕池。每个弹幕都有一个对应的XML文件,我们可以通过解析XML文件得到b站视频的弹幕。

因此,只要知道cid参数的值,就可以找到视频弹幕数据的位置。

那么我们在看视频的时候如何获取这个XML文件呢?

b站的弹幕在一个XML文件里,每个视频都有对应的cid和aid。我们可以通过获取cid中的数字并将它们放入http://comment.bilibili.com/cid.xml.中来获得相应的弹幕XML文件

首先我们打开视频播放地址,F12打开浏览器开发者模式,如下图,我们可以通过找到视频对应的cid来构造弹幕链接。

http://comment.bilibili.com/451236101.xml

到目前为止,有了弹幕文件,就会用爬虫分析弹幕,分析弹幕的内容。

请求发送

我们使用请求模拟浏览器发送请求来获取弹幕数据。

url = f & # 39http://comment.bilibili.com/{刑事调查局。xml & # 39headers = { & # 39referer & # 39: 'https://www.bilibili.com/video/BV19h411s7oq? SPM _ id _ from = 333 . 934 . 0 . 0 & # 39;, '用户代理& # 39;: 'https://www.bilibili.com/video/BV19h411s7oq? SPM _ id _ from = 333 . 934 . 0 . 0 & # 39;, '饼干& # 39;: "_ uuid = 19 df1 EDB-20b 7-FF74-A700-9df 415 b 2429530977 infoc;bu vid 3 = aad6c 6c 7-FB31-40e 7-92EC-7 a6 a7 ed 3920 c 148814 infoc;sid = jzp2723t指纹= 2e 74 a5 BC 11 a3 adec 2616987 DDE 475370;bu vid _ FP = aad 6 c6c 7-FB31-40e 7-92EC-7 a6 a7 ed 3920 c 148814 infoc;bu vid _ FP _ plain = aad 6 c6c 7-FB31-40e 7-92EC-7 a6 a7 ed 3920 c 148814 infoc;DedeUserID = 434541726DedeUserID _ _ CK MD5 = 448 FDA 6 ab 5098 E5 e;sess data = 1 Fe 46 ad 7% 2c 1651971297% 2 CEB 583 * B1;毕丽_ jct = 5 BCD 45718996 AC 402 a 29 c7f 23110984d;blackside _ state = 1;RP did = |(u)YJlJmmu | 0J & # 39;uYJYRummJmBP _ t _ offset _ 434541726 = 590903773845625600;BP _ video _ offset _ 434541726 = 590903773845625600;CURRENT _ BLACKGAP = 0;LIVE _ BUVID = auto 5716377130871212;video _ page _ version = v _ old _ homePVID = 1;CURRENT _ FNVAL = 976我想回去= 1;b _ ut = 6;b _ LSID = 4 f 7 CFC 82 _ 17d 78864851;bsource = search _ baiduinnersign = 1 & # 34} resp = requests.get (URL,headers = headers)print(resp . text)成功获取数据,但全部是乱码。我们不需要在这里设置字符的编码格式。

只要让request得到的编码格式等于网页的编码格式就可以了。

一行代码就可以搞定。

#呼叫。属性来获取请求模块的编码模式。apparent_encoding属性获取网页的编码模式#将网页的编码模式赋给response。encoding resp . encoding = resp . apparent _ encoding成功获取弹幕数据。

信息提取

数据已经成功获取,接下来需要提取所有弹幕信息。

我们从网站的回应信息可以看到,所有的弹幕文字信息其实都在

* * * *在标签内

& ltd

p = & # 34221.05300,1,25,16777215,1638378040,0,a60c99c7,58346355162459136,10 & # 34;& gt太傻了,二仙桥叔叔

# 获取所有评论内容content_list = re.findall('<d p=".*?">(.*?)</d>', resp.text)

# Get all comments content _ list = re . find all(& # 39;& ltd p = & # 34。*?"& gt(.*?)& lt/d & gt;',分别为文本)

数据保存

我们使用函数将所有的弹幕数据存储在‘哔哩哔哩弹幕’中。csv文件。

if os.path.exists(comment_file_path): os.remove(comment_file_path)for item in content_list: with open(comment_file_path, 'a', encoding = 'utf-8')as fin: fin.write(item + '\n') print(item)print('————-弹幕获取完毕!————-')

如果OS . path . exists(comment _ file _ path):OS . remove(comment _ file _ path)for item in content _ list:with open(comment _ file _ path,& # 39;一& # 39;,编码= & # 39;utf-8 & # 39;)作为fin:fin . write(item+& # 39;\ n & # 39)打印(项目)打印(& # 39;-弹幕已被收购!- ')

数据处理

接下来,对数据进行去重复和去[/k0/]处理,然后随机选择五条数据,如下所示:

# read data rcv _ data = PD . read _ CSV(& # 39;。/哔哩哔哩弹幕。csv & # 39,编码= & # 39;gbk & # 39)#样本秀5数据打印(rcv_data.sample(5))精彩弹幕538开心脸162直播661买两箱买买买17笑死我了哈哈哈424别忘了你的主动性介意词频秀。

文章评论出现频率最高的前十个词如下:

# 词频设置all_words = [word for word in result.split(' ') if len(word) > 1 and word not in stop_words]wordcount = Counter(all_words).most_common(10) '''('哈哈哈', '大爷', '制作', '离谱', '一起', '猝不及防', '二仙', 'sir', '卧槽', '一定')(207, 69, 27, 13, 13, 13, 12, 12, 12, 9)'''

#词频设置all _ words =[结果中的逐字。拆分(& # 39;')if len(word)>1且单词不在stop _ words]word count = Counter(all _ words)。最常见的(10)& # 39;''('哈哈哈& # 39;, '叔叔& # 39;, '生产& # 39;, '可笑& # 39;, '一起& # 39;, '猝不及防& # 39;, '尔贤& # 39;, '先生& # 39;, '卧槽& # 39;, '必须& # 39;)(207, 69, 27, 13, 13, 13, 12, 12, 12, 9)'''

词云展示

我们使用口吃分词。

最后用stylecloud画出漂亮的文字云图。

# 词云展示def visual_ciyun(): pic = './img.jpg' gen_stylecloud(text=result, icon_name='fas fa-archway', font_path='msyh.ttc', background_color='white', output_name=pic, custom_stopwords=stop_words )print('词云图绘制成功!')

#字云显示def visual _ ciyun():pic = & # 39;。/img . jpg & # 39;gen_stylecloud(text=result,icon _ name = & # 39Fas fa-archway & # 39;,font _ path = & # 39msyh.ttc & # 39,background _ color = & # 39怀特& # 39;,output_name=pic,custom _ stop words = stop _ words)print(& # 39;单词云图绘制成功!')

源码奉上

# -*- coding: utf-8 -*-# Date: 2021/12/2 10:00# Author: 不卖萌的邓肯# wechat: 印象pythonimport requestsimport re, osimport jiebafrom wordcloud import WordCloudfrom imageio import imreadcomment_file_path = 'B站弹幕.csv'def spider_page(cid): url = f'http://comment.bilibili.com/{ cid}.xml' headers = { 'referer': 'xxxxx', 'User-Agent': 'xxxxx', 'cookie': "xxxxx" } resp = requests.get(url, headers = headers) # 调用.encoding属性获取requests模块的编码方式 # 调用.apparent_encoding属性获取网页编码方式 # 将网页编码方式赋值给response.encoding resp.encoding = resp.apparent_encoding print(resp.text) if resp.status_code == 200: # 获取所有评论内容 content_list = re.findall('<d p=".*?">(.*?)</d>', resp.text) if os.path.exists(comment_file_path): os.remove(comment_file_path) for item in content_list: with open(comment_file_path, 'a', encoding = 'utf-8')as fin: fin.write(item + '\n') print(item) print('————-弹幕获取完毕!————-')def data_visual(): with open(comment_file_path, encoding='utf-8')as file: comment_text = file.read() wordlist = jieba.lcut_for_search(comment_text) new_wordlist = ' '.join(wordlist) mask = imread('img_1.png') wordcloud = WordCloud(font_path='msyh.ttc', mask=mask).generate(new_wordlist) wordcloud.to_file('picture_1.png')if __name__ == '__main__': cid = '451236101' print('正在解析,开始爬取弹幕中。。。。。') spider_page(cid) #data_visual()

今天分享就到此结束啦!有问题,评论区见~~#-*-编码:UTF-8-*-#日期:2021/12/2 10: 00 #作者:Duncan谁不卖萌#微信:Impression python import requestsimport re,OS import jieba from word cloud import word cloud from imageio import imread comment _ file _ path = & # 39;哔哩哔哩弹幕。csv & # 39def spider _ page(cid):URL = f & # 39;http://comment.bilibili.com/{刑事调查局。xml & # 39headers = { & # 39referer & # 39: 'xxxxx & # 39, '用户代理& # 39;: 'xxxxx & # 39, '饼干& # 39;: "xxxxx & # 34} resp = requests.get(url,header = Headers)#调用。属性来获取请求模块的编码模式。apparent_encoding属性获取网页的编码方式#将网页编码方式赋给response . encoding resp . encoding = resp . apparent _ encoding print(resp . text)ifresp . status _ code = = 200:# Get all comments content _ list = re . find all(& # 39;& ltd p = & # 34。*?"& gt(.*?)& lt/d & gt;',resp . text)if OS . path . exists(comment _ file _ path):OS . remove(comment _ file _ path)for item in content _ list:with open(comment _ file _ path,& # 39;一& # 39;,编码= & # 39;utf-8 & # 39;)作为fin:fin . write(item+& # 39;\ n & # 39)打印(项目)打印(& # 39;-弹幕已被收购!- ')def data _ visual():with open(comment _ file _ path,encoding = & # 39utf-8 & # 39;)作为文件:comment _ text = file . read()word list = jieba . lcut _ for _ search(comment _ text)new _ word list = & # 39;'。join(wordlist)mask = imread(& # 39;img _ 1.png & # 39)word cloud = word cloud(font _ path = & # 39;msyh.ttc & # 39,mask=mask)。generate(new _ word list)word cloud . to _ file(& # 39;picture _ 1.png & # 39)if _ _ name _ _ = = & # 39_ _ main _ _ & # 39:cid = & # 39451236101'打印(& # 39;解析,开始往弹幕里爬。。。。。')spider_page(cid) #data_visual()今天的分享到此结束!如有疑问,评论区见~ ~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

本文来自网络,若有侵权,请联系删除,作者:给力软件,如若转载,请注明出处:https://examemo.com/1192.html

发表回复

登录后才能评论