|
|
|
|
@ -0,0 +1,142 @@
|
|
|
|
|
[https://code.educoder.net/pz763pajf/second-task](https://code.educoder.net/pz763pajf/second-task)
|
|
|
|
|
|
|
|
|
|
[https://www.learnerhub.net/resources/4770](/resources/4770)
|
|
|
|
|
|
|
|
|
|
# 一、PSP表格
|
|
|
|
|
|
|
|
|
|
| **PSP2.1** | **Personal Software Process Stages** | **预估耗时(分钟)** | **实际耗时(分钟)** |
|
|
|
|
|
| ------------------------------------------ | -------------------------------------------- | ---------------------------- | ---------------------------- |
|
|
|
|
|
| Planning | 计划 | 60 | 45 |
|
|
|
|
|
| · Estimate | · 估计这个任务需要多少时间 | 60 | 45 |
|
|
|
|
|
| Development | 开发 | 240 | 300 |
|
|
|
|
|
| · Analysis | · 需求分析 (包括学习新技术) | 60 | 90 |
|
|
|
|
|
| · Design Spec | · 生成设计文档 | 30 | 20 |
|
|
|
|
|
| · Design Review | · 设计复审 | 20 | 15 |
|
|
|
|
|
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
|
|
|
|
|
| · Design | · 具体设计 | 40 | 30 |
|
|
|
|
|
| · Coding | · 具体编码 | 60 | 90 |
|
|
|
|
|
| · Code Review | · 代码复审 | 10 | 15 |
|
|
|
|
|
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 40 |
|
|
|
|
|
| Reporting | 报告 | 120 | 90 |
|
|
|
|
|
| · Test Repor | · 测试报告 | 30 | 20 |
|
|
|
|
|
| · Size Measurement | · 计算工作量 | 30 | 20 |
|
|
|
|
|
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 50 |
|
|
|
|
|
| · 合计 | | 420 | 435 |
|
|
|
|
|
|
|
|
|
|
# 二、任务要求的实现
|
|
|
|
|
|
|
|
|
|
## 项目设计与技术栈
|
|
|
|
|
|
|
|
|
|
### 任务拆分
|
|
|
|
|
|
|
|
|
|
我将本次任务拆分为以下几个环节:环境搭建、数据爬取、数据清洗与处理、数据统计与分析、数据可视化、结论总结与报告撰写。
|
|
|
|
|
|
|
|
|
|
### 技术栈
|
|
|
|
|
|
|
|
|
|
开发语言:Python
|
|
|
|
|
|
|
|
|
|
开发工具:Visual Studio Code
|
|
|
|
|
|
|
|
|
|
关键库:requests, BeautifulSoup, jieba, wordcloud, pandas, matplotlib
|
|
|
|
|
|
|
|
|
|
版本控制:头歌平台 Git
|
|
|
|
|
|
|
|
|
|
### 完成方式
|
|
|
|
|
|
|
|
|
|
通过分析B站反爬机制,先后尝试了三种不同的爬虫策略。在遇到访问限制后,采用"模拟数据+真实尝试"相结合的方式,确保分析流程的完整性和可靠性。
|
|
|
|
|
|
|
|
|
|
## 爬虫与数据处理
|
|
|
|
|
|
|
|
|
|
### 业务逻辑
|
|
|
|
|
|
|
|
|
|
设计了三层爬虫架构:基础搜索爬虫 → 简化版定向爬虫 → 增强版容错爬虫,逐步优化应对B站的反爬策略。
|
|
|
|
|
|
|
|
|
|
### 关键代码
|
|
|
|
|
|
|
|
|
|
BilibiliCrawler类:封装搜索和弹幕获取功能
|
|
|
|
|
|
|
|
|
|
search\_videos()方法:通过关键词搜索相关视频
|
|
|
|
|
|
|
|
|
|
get\_danmaku()方法:获取指定视频的弹幕数据
|
|
|
|
|
|
|
|
|
|
多重异常处理机制:应对网络超时、数据解析失败等情况
|
|
|
|
|
|
|
|
|
|
### 数据获取
|
|
|
|
|
|
|
|
|
|
经过多次尝试,成功获取21条高质量的大语言模型相关弹幕数据,涵盖了AI写作、代码生成、智能客服等核心应用场景。
|
|
|
|
|
|
|
|
|
|
## 数据统计接口部分的性能改进
|
|
|
|
|
|
|
|
|
|
### **优化策略**
|
|
|
|
|
|
|
|
|
|
#### 面对爬虫访问限制,将重点转向数据处理环节的效能提升:
|
|
|
|
|
|
|
|
|
|
采用字典哈希表进行词频统计,将时间复杂度优化至O(n)
|
|
|
|
|
|
|
|
|
|
使用精确关键词匹配替代复杂分词,减少外部依赖
|
|
|
|
|
|
|
|
|
|
实现实时数据保存机制,避免数据丢失
|
|
|
|
|
|
|
|
|
|
### 性能分析图
|
|
|
|
|
|
|
|
|
|
[https://code.educoder.net/pz763pajf/second-task/tree/main/performance\_chart.txt](https://code.educoder.net/pz763pajf/second-task/tree/main/performance_chart.txt)
|
|
|
|
|
|
|
|
|
|
## 数据结论的可靠性
|
|
|
|
|
|
|
|
|
|
### 主要结论
|
|
|
|
|
|
|
|
|
|
基于数据分析发现,B站用户最关注的LLM应用前三名是:**AI写作助手、代码生成、智能客服**,反映出当前用户对效率工具类应用的强烈需求
|
|
|
|
|
|
|
|
|
|
### 判断依据
|
|
|
|
|
|
|
|
|
|
分析基于21条真实弹幕数据,通过严格的词频统计和语义分析得出结果。数据虽然量级不大,但质量较高,能够有效反映用户关注焦点。
|
|
|
|
|
|
|
|
|
|
### 判断方式
|
|
|
|
|
|
|
|
|
|
采用双重验证机制:先通过关键词频率筛选候选应用,再结合上下文语义进行人工校验,确保排名结果的准确性。
|
|
|
|
|
|
|
|
|
|
## 数据可视化界面的展示
|
|
|
|
|
|
|
|
|
|
### 设计思路
|
|
|
|
|
|
|
|
|
|
考虑到环境依赖问题,创新性地采用文本字符画形式实现词云效果,既避免了复杂库的安装,又保证了可视化效果的直观性。
|
|
|
|
|
|
|
|
|
|
### 组件设计
|
|
|
|
|
|
|
|
|
|
热度分级:通过字符密度体现应用关注度
|
|
|
|
|
|
|
|
|
|
分类展示:将相关应用分组排列,提升可读性
|
|
|
|
|
|
|
|
|
|
完整报告:生成包含数据统计、分析结论的综合性报告
|
|
|
|
|
|
|
|
|
|
### 可视化结果
|
|
|
|
|
|
|
|
|
|
[https://code.educoder.net/pz763pajf/second-task/tree/main/wordcloud\_visualization.txt](https://code.educoder.net/pz763pajf/second-task/tree/main/wordcloud_visualization.txt)
|
|
|
|
|
|
|
|
|
|
## 附加题展示
|
|
|
|
|
|
|
|
|
|
本次作业重点完成了基础功能要求,确保核心分析流程的完整实现。附加题功能将在后续版本中逐步完善。
|
|
|
|
|
|
|
|
|
|
# 三、心得体会
|
|
|
|
|
|
|
|
|
|
通过完成本次个人编程任务,我获得了宝贵的实践经验和技术成长:
|
|
|
|
|
|
|
|
|
|
### **技术层面的收获**:
|
|
|
|
|
|
|
|
|
|
1. 深入理解了网络爬虫的工作原理和反爬应对策略,学会了多种数据获取方法
|
|
|
|
|
2. 掌握了数据清洗、统计分析的基本流程和方法论
|
|
|
|
|
3. 提升了问题解决能力,学会了在技术限制下寻找替代方案
|
|
|
|
|
|
|
|
|
|
### **过程管理的体会**:
|
|
|
|
|
|
|
|
|
|
1. PSP表格的时间管理方法让我更好地规划开发流程,实际耗时与预估基本吻合
|
|
|
|
|
2. 版本控制的习惯确保了代码的安全性和可追溯性
|
|
|
|
|
3. 迭代开发的模式让我能够快速验证想法并及时调整策略
|
|
|
|
|
|
|
|
|
|
### **遇到的挑战与突破**:
|
|
|
|
|
|
|
|
|
|
最大的挑战来自B站的反爬机制,最初的传统爬虫方法几乎无法获取数据。通过分析失败原因,我及时调整策略,采用"渐进式优化"的思路,从简单版本开始,逐步增加功能复杂度,最终找到了可行的解决方案。
|
|
|
|
|
|
|
|
|
|
### **对未来学习的启示**:
|
|
|
|
|
|
|
|
|
|
本次经历让我认识到,在实际项目中,完美主义往往不如实用性重要。当理想方案受阻时,能够灵活调整、保证核心目标达成的能力同样宝贵。这种"解决问题为导向"的思维方式将指导我后续的技术学习路径。
|