首页 > 数据库 > 数据库开发技术 > 盘点一个哔哩哔哩弹幕抓取并词云可视化的项目
回复“资源”即可获赠Python学习资料
大家好,我是皮皮。
前几天在Python白银交流群【肉丸胡辣汤】问了一个Python网络爬虫和可视化的问题,提问截图如下:
代码如下:
#导入我们要用到的模块
import requests
import re
import jieba
import wordcloud
import imageio
#选择同一个文件夹下的luoxiang.jpg图片
mask = imageio.imread('xing.jpg')
#设置想要爬取的网页地址
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
#设置请求头,让爬虫伪装成浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}
def get_damu(url):
response = requests.get(url, headers)
response = response.content.decode('utf-8')
#通过正则表达式获取两个<d>标签内包含的弹幕信息
data = re.compile('<d.*?>(.*?)</d>')
#对目标网页使用正则表达式,获取所有匹配的内容
danmu = data.findall(response)
#使用jieba模块的lcut()精确模式进行分词,并用空格连接词语
danmu_word = jieba.lcut(" ".join(danmu))
#将分词结果再次用空格连接,并转化成制作词云需要的字符串形式
danmu_str = " ".join(danmu_word)
#构造词云对象,字体为微软雅黑,背景颜色为白色
#设置宽度为1000高度为500,通过mask设置图片形状
w = wordcloud.WordCloud(font_path="msyh.ttc",background_color='white',width=1000,height=500,mask=mask)
#将处理好的分词弹幕加载到词云中
w.generate(danmu_str)
#将生成的词云保存为danmu.png图片
w.to_file('danmu.png')
if __name__ == '__main__':
s = input("输入要爬取的弹幕地址:")
# 将用户输入的弹幕地址去掉空格并加载到get_danmu()中
get_damu(s.strip())
这个代码是从其他文章上看到的,确实可以运行,只不过现在想换个视频的URL,对于新手来说,找起来可就没那么简单了。
之后在这里可以找到地址:
这里【dcpeng】给了一份代码,修改后的代码如下:
# 导入我们要用到的模块
import requests
import re
import jieba
import wordcloud
import imageio
# 选择同一个文件夹下的luoxiang.jpg图片
mask = imageio.imread('Python进阶者.jpg')
# 设置想要爬取的网页地址
# url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
# 设置请求头,让爬虫伪装成浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}
def get_damu(url):
response = requests.get(url, headers)
response = response.content.decode('utf-8')
# 通过正则表达式获取两个<d>标签内包含的弹幕信息
data = re.compile('<d.*?>(.*?)</d>')
# 对目标网页使用正则表达式,获取所有匹配的内容
danmu = data.findall(response)
# 使用jieba模块的lcut()精确模式进行分词,并用空格连接词语
danmu_word = jieba.lcut(" ".join(danmu))
# 将分词结果再次用空格连接,并转化成制作词云需要的字符串形式
danmu_str = " ".join(danmu_word)
# 构造词云对象,字体为微软雅黑,背景颜色为白色
# 设置宽度为1000高度为500,通过mask设置图片形状
w = wordcloud.WordCloud(font_path="simkai.ttf", background_color='white', width=1000, height=500, mask=mask)
# 将处理好的分词弹幕加载到词云中
w.generate(danmu_str)
# 将生成的词云保存为danmu.png图片
w.to_file('danmu.png')
if __name__ == '__main__':
# s = input("输入要爬取的弹幕地址:")
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
# 将用户输入的弹幕地址去掉空格并加载到get_danmu()中
# get_damu(s.strip())
get_damu(url)
运行之后可以得到预期的效果了。
如果需要其他的视频弹幕,找到对应的url,替换即可。
比分说下图的URL地址,找起来可能就没那么简单了,需要在抓包的XHR中认真的找。
自己找一天,不如群里几分钟。
这个抓取弹幕的代码还是蛮实用的,有需要的小伙伴可以收藏着,万一哪天用到了呢!
大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫和词云可视化的问题,文中针对该问题,并给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【肉丸胡辣汤】提问,感谢【dcpeng】、【此类生物】给出的思路和代码解析,感谢【甯同学】、【greenHandPyer】等人参与学习交流。
大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python付费学习交流群,欢迎大家加入我的Python学习交流群!

有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------
往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
原文作者:Python爬虫与数据挖掘;如有侵权,请联系管理员删除。