python爬取bilibili视频信息_python实现爬取指定bilibili视频的弹幕并制作词云

先看下最终实现的效果

1850494-20191031150314880-255483134.png

具体实现思路是

1.爬取带有弹幕信息的网页

2.处理爬取得到的内容并提取所需要的弹幕信息,然后写入文本中

3.通过词云库将文本处理成想要的图片

所需要用到的库

importrequestsfrom bs4 importBeautifulSoupimportpandas as pdimportreimportjiebafrom wordcloud importWordCloudfrom scipy.misc importimreadimport matplotlib.pyplot as plt

首先爬取想要的信息

ps(哔哩哔哩的弹幕全部保存在 http://comment.bilibili.com/122512779.xml 中,红色字体为该视频的cid,可以在当前视频页通过:查看网页源代码—ctrl+f查找cid-出现的第一个9位cid,来获取)

url = 'http://comment.bilibili.com/.xml' #对方的url

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

res= requests.get(url=url, headers=header) #向对方网页发送请求

res.encoding = res.apparent_encoding #将编码设置为对方网页的编码,确保不会出现乱码

data = res.text #获取文本

soup = BeautifulSoup(data, 'lxml') #进行过滤操作,需要用到lxml包,无需导入。pip install lxml

d_list = soup.find_all('d') #获取所有的d标签中的内容

然后提取其中的弹幕,将其放入文本中,最后通过jieba库处理成词语

dlst =[]for d in d_list: #循环拿出所有的d标签

danmu ={}

danmu['弹幕'] = d.text #获取文本信息

#danmu['时间'] = datetime.datetime.now()

#danmu['路径'] = url

dlst.append(danmu)

df= pd.DataFrame(dlst) #转换成二维数组,类似于execl表格

f= open('sign.txt', 'w', encoding='utf-8') #打开文件

for i in df['弹幕'].values: #循环所有的文本信息

pat = re.compile(r'[一-龥]+') #定义过滤数据的规则,所有的汉字

filter_data = re.findall(pattern=pat, string=i) #执行过滤操作

f.write("".join(filter_data)) #写入文本

f.close()

f= open('sign.txt', 'r', encoding='utf8')

data=f.read()

result= " ".join(jieba.lcut(data))

f.close()

最后通过wordcloud库提供的方法将其转化为图片

color_mask = imread('th.png')

wc=WordCloud(

font_path=r'C:\Windows\Fonts\STKAITI.TTF',

width=1000,

height=800,

mask=color_mask,

background_color='black')

wc.generate(result) #读取文本数据

wc.to_file('bili.jpg') #输出图片

plt.imshow(wc)

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值