爬虫学习——大碗宽面b站和网易云可视化分析代码

本文介绍了一种使用Python从Bilibili抓取弹幕评论的方法,并利用jieba分词和词云库生成可视化词云图的过程。通过BeautifulSoup解析XML数据,再借助pandas进行数据处理,最后利用WordCloud生成词云。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码链接:https://github.com/Brucepk/Kris-noodles

一、哔哩哔哩弹幕

#bilibili-noodles.py
from bs4 import BeautifulSoup
import pandas as pd
import requests
url = 'http://comment.bilibili.com/87150521.xml'
html = requests.get(url).content
html_data = str(html, 'utf-8')
soup = BeautifulSoup(html_data, 'lxml')
results = soup.find_all('d')

comments = [comment.text for comment in results]
comments_dict = {'comments': comments}

df = pd.DataFrame(comments_dict)
df.to_csv('noodles.csv', encoding='utf-8')

str(html, ‘utf-8’) 可以转换编码

#bilibili-noodles-jieba
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba

df = pd.read_csv('noodles.csv', header=None)

text = ''
for line in df[1]:
    text += ' '.join(jieba.cut(line, cut_all=False))
backgroud_Image = plt.imread('Kris.jpg')

wc = WordCloud(background_color='white', mask=backgroud_Image, font_path='C:\Windows\Fonts\STXINGKA.TTF',
               max_words=2000, max_font_size=80, random_state=30,)
wc.generate_from_text(text)
# 看看词频高的有哪些,把无用信息去除
process_word = WordCloud.process_text(wc, text)
sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
print(sort[:50])
img_colors = ImageColorGenerator(backgroud_Image)
wc.recolor(color_func=img_colors)
plt.imshow(wc)
plt.axis('off')
wc.to_file("wyf.jpg")
print('生成词云成功!')

https://github.com/fxsjy/jieba

  • jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用HMM 模型
  • jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
  • 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
  • jieba.cut 以及jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for循环来获得分词后得到的每一个词语(unicode),或者用 jieba.lcut 以及 jieba.lcut_for_search直接返回 list
  • jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

backgroud_Image = plt.imread(‘Kris.jpg’)读取图片生成三维数组

wc = WordCloud(background_color=‘white’, mask=backgroud_Image,font_path=‘C:\Windows\Fonts\STXINGKA.TTF’,max_words=2000, max_font_size=80, random_state=30,)
mask图形,font_path字体,max_font_size显示的最小的字体大小,max_words要显示的词的最大个数,random_state : int or None为每个单词返回一个PIL颜色

### 关于大碗绿豆沙博主分享的TAB栏阅读卡片前端实现 在前端开发中,创建一个功能性的TAB栏通常涉及HTML结构定义、CSS样式设计以及JavaScript逻辑控制。以下是基于常见实践的一个简单示例,展示如何通过纯前端技术实现类似的TAB栏效果。 #### HTML 结构 HTML用于构建页的基本框架,这里我们假设有一个简单的TAB栏对应的卡片内容区域: ```html <div class="tab-container"> <div class="tabs"> <button class="tab-button active" data-tab="tab1">Tab 1</button> <button class="tab-button" data-tab="tab2">Tab 2</button> <button class="tab-button" data-tab="tab3">Tab 3</button> </div> <div class="tab-content"> <div id="tab1" class="content-item active">Content of Tab 1</div> <div id="tab2" class="content-item">Content of Tab 2</div> <div id="tab3" class="content-item">Content of Tab 3</div> </div> </div> ``` #### CSS 样式 为了使界更加美观并增强用户体验,可以应用如下CSS样式来美化TAB栏及其对应的内容区: ```css .tab-container { width: 80%; margin: auto; } .tabs { display: flex; justify-content: space-around; border-bottom: 2px solid #ccc; } .tab-button { padding: 10px 20px; cursor: pointer; background-color: transparent; border: none; outline: none; font-size: 16px; } .tab-button.active, .tab-button:hover { color: blue; border-bottom: 2px solid blue; } .content-item { display: none; padding: 20px; border: 1px solid #ddd; } .content-item.active { display: block; } ``` #### JavaScript 功能实现 最后一步是利用JavaScript动态切换显示不同的TAB内容项: ```javascript document.addEventListener('DOMContentLoaded', function () { const buttons = document.querySelectorAll('.tab-button'); buttons.forEach(button => { button.addEventListener('click', function (e) { e.preventDefault(); // 移除当前激活状态 document.querySelector('.tab-button.active').classList.remove('active'); document.querySelector('.content-item.active').classList.remove('active'); // 添加新的激活状态到点击的目标按钮及相应内容 this.classList.add('active'); document.getElementById(this.dataset.tab).classList.add('active'); }); }); }); ``` 此代码片段展示了基本的功能性实现方法[^1]。具体细节可能因实际需求而异,比如动画过渡效果或者更复杂的交互行为等都可以进一步扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值