# 微博挖挖 **Repository Path**: spark_more/weibo-digging-and-digging ## Basic Information - **Project Name**: 微博挖挖 - **Description**: 微博数据挖掘平台是一个功能完整的社交媒体数据分析工具,专为微博数据查询与可视化设计。平台采用前后端分离架构,前端基于原生 Web 技术构建响应式界面,后端使用 Flask 框架和 SQLite 数据库提供高效数据服务。核心功能包括:用户信息查询:支持通过 UID 获取用户基本资料、粉丝/关注数据微博动态分析:加载并展示用户发布的微博列表、互动统计关系链管理:可视化呈现关注与粉丝网络等 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-10-12 - **Last Updated**: 2026-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微博数据挖掘平台 一个功能完整的微博数据可视化平台,支持用户信息查询、微博动态分析、关系链管理和数据监控等功能。 ## 🚀 项目结构 ``` 新作业一/ ├── README.md # 项目说明文档 ├── frontend/ # 前端界面 │ └── index.html # 主应用界面 ├── backend/ # 后端服务 │ ├── app.py # Flask API 主应用 │ ├── database.py # 数据库操作模块 │ ├── requirements.txt # Python 依赖包 │ ├── test_api.py # API 测试文件 │ ├── weibo_data.db # SQLite 数据库 │ └── venv/ # Python 虚拟环境 └── 任务四/ # 反爬演示 └── anti-crawler-demo.html # 反爬示例代码 ``` ## ✨ 核心功能 ### 1. 用户信息查询 - **基本信息**:用户名、粉丝数、关注数、微博数 - **详细资料**:认证状态、简介、所在地 - **个人信息**:IP 属地、生日、注册时间、性别 - **头像显示**:用户头像加载和显示 ### 2. 微博动态展示 - 加载用户微博列表 - 支持图片展示 - 转发、评论、点赞数据统计 - 可点击查看单条微博评论 ### 3. 关系链管理 - **关注列表**:显示用户关注的所有账号 - **粉丝列表**:显示用户的所有粉丝 - **快速跳转**:点击用户名可直接查看该用户信息 ### 4. 用户界面 - 响应式设计,适配各种屏幕 - 现代化卡片布局 - 直观的导航和交互 - 支持键盘快捷操作(Enter 键查询) ### 5. 数据监控功能 - **实时监控**:定时检测被监控用户的最新数据变化 - **变更提醒**:当用户数据发生变化时,自动记录并提醒 - **监控列表**:管理被监控的用户名单 - **变更历史**:查看所有数据变更的历史记录 - **状态更新**:实时显示监控状态和最后检查时间 ## 📦 技术栈 ### 前端 - HTML5 + CSS3 - JavaScript (ES6+) - Font Awesome 图标库 - 原生实现,无需额外依赖 ### 后端 - Python 3.10+ - Flask 框架 - SQLite3 数据库 - Flask-CORS 跨域支持 ## 🛠️ 部署指南 ### 1. 环境准备 确保您已安装 Python 3.10+ 版本 ### 2. 数据库部署 #### 2.1 数据库概述 本项目使用 **SQLite3** 作为数据存储方案,具有以下特点: - 轻量级,无需额外安装数据库服务 - 单文件存储,便于部署和迁移 - 原生支持 Python,无需额外依赖 - 适用于数据量不大的应用场景 #### 2.2 数据库文件 - 数据库文件位置:`backend/weibo_data.db` - 预加载了部分微博用户数据 - 包含用户信息、微博动态、关系链等表 #### 2.3 数据库初始化(可选) 如果需要重新初始化数据库或导入新数据: ```python # 在 backend 目录下运行 Python cd backend python # 导入数据库模块并初始化 >>> import database >>> db = database.Database() >>> # 创建所有表 >>> db.create_tables() >>> # 导入示例数据(如果有) >>> db.import_sample_data() ``` #### 2.4 数据结构 数据库主要包含以下表: ##### 核心数据表 - `users`: 用户基本信息 - `weibo_posts`: 微博动态数据 - `followers`: 粉丝关系表 - `followings`: 关注关系表 ##### 监控相关表 - `tracking_list`: 用户监控记录表 - `change_logs`: 数据变更日志表 ##### 表结构详细说明 ###### users(用户表) ```sql CREATE TABLE users ( id TEXT PRIMARY KEY, screen_name TEXT, name TEXT, description TEXT, followers_count INTEGER DEFAULT 0, friends_count INTEGER DEFAULT 0, statuses_count INTEGER DEFAULT 0, created_at DATETIME, verified INTEGER DEFAULT 0, verified_type INTEGER DEFAULT 0, verified_reason TEXT, profile_image_url TEXT, gender TEXT DEFAULT 'n', location TEXT, url TEXT, crawled_at DATETIME DEFAULT CURRENT_TIMESTAMP, last_updated DATETIME DEFAULT CURRENT_TIMESTAMP ) ``` ###### weibo_posts(微博表) ```sql CREATE TABLE weibo_posts ( id TEXT PRIMARY KEY, user_id TEXT, created_at DATETIME, text TEXT, source TEXT, reposts_count INTEGER DEFAULT 0, comments_count INTEGER DEFAULT 0, attitudes_count INTEGER DEFAULT 0, is_repost INTEGER DEFAULT 0, raw_text TEXT, crawled_at DATETIME DEFAULT CURRENT_TIMESTAMP, last_updated DATETIME DEFAULT CURRENT_TIMESTAMP ) ``` ###### followers(粉丝表) ```sql CREATE TABLE followers ( user_id TEXT, follower_id TEXT, followed_at DATETIME, crawled_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, follower_id) ) ``` ###### followings(关注表) ```sql CREATE TABLE followings ( user_id TEXT, following_id TEXT, followed_at DATETIME, crawled_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, following_id) ) ``` ###### tracking_list(监控表) ```sql CREATE TABLE tracking_list ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id TEXT UNIQUE, is_monitored INTEGER DEFAULT 1, last_check DATETIME DEFAULT CURRENT_TIMESTAMP, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, check_interval INTEGER DEFAULT 60 ) ``` ###### change_logs(变更日志表) ```sql CREATE TABLE change_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id TEXT, change_type TEXT, change_details TEXT, detected_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ``` ### 3. 后端服务部署 ```bash cd backend # 创建并激活虚拟环境(推荐) python -m venv venv # Windows 激活虚拟环境 venv\Scripts\activate # Linux/Mac 激活虚拟环境 source venv/bin/activate # 安装依赖包 pip install -r requirements.txt # 启动后端服务 python app.py ``` 后端服务将运行在:`http://localhost:5000` ### 4. 前端服务部署 在新的终端窗口中执行: ```bash cd frontend # 启动 HTTP 服务器(Python 3) python -m http.server 8000 # 或使用其他 HTTP 服务器(如 Node.js 的 http-server) ``` 前端界面将运行在:`http://localhost:8000` ### 5. 访问应用 打开浏览器访问:`http://localhost:8000/index.html` ## 📖 使用说明 1. **输入 UID**:在页面顶部的输入框中输入微博用户的 UID - 示例 UID:`2803301701`(人民日报) 2. **开始查询**:点击「查询全部」按钮或按 Enter 键 3. **查看数据**: - 用户信息卡片显示用户基本数据 - 微博动态卡片展示用户的最新微博 - 关注/粉丝卡片显示用户的关系链信息 4. **交互操作**: - 点击微博图片可查看大图 - 点击关系链用户名可快速切换查询用户 - 点击微博评论数可查看单条微博评论 5. **监控功能**: - 点击「开始监控」按钮添加当前用户到监控列表 - 点击「停止监控」按钮移除当前用户的监控 - 系统将每 60 秒自动检查被监控用户的数据变化 - 变更历史会显示在「数据变更」面板中 ## 📚 API 接口 ### 用户信息 ``` GET http://localhost:5000/api/user?uid=2803301701 ``` ### 微博列表 ``` GET http://localhost:5000/api/tweets?q=2803301701&page=1 ``` ### 关注列表 ``` GET http://localhost:5000/api/user/2803301701/friends?page=1 ``` ### 粉丝列表 ``` GET http://localhost:5000/api/user/2803301701/followers?page=1 ``` ### 单条微博评论 ``` GET http://localhost:5000/api/tweet/123456789/comments ``` ### 监控相关接口 #### 开始监控用户 ``` POST http://localhost:5000/api/monitor/start Content-Type: application/json { "user_id": "2803301701" } ``` #### 停止监控用户 ``` POST http://localhost:5000/api/monitor/stop Content-Type: application/json { "user_id": "2803301701" } ``` #### 获取监控状态 ``` GET http://localhost:5000/api/monitor/status ``` #### 获取变更日志 ``` GET http://localhost:5000/api/monitor/changes ``` ## 🐛 故障排除 ### 常见问题 1. **跨域错误**: - 确保后端服务已正确配置 CORS - 检查前后端服务是否都在运行 2. **数据加载失败**: - 确认 UID 输入正确 - 检查后端服务是否正常运行 - 查看浏览器开发者工具 Console 输出 3. **依赖安装问题**: - 使用虚拟环境避免包冲突 - 更新 pip 到最新版本:`pip install --upgrade pip` 4. **数据库错误**: - 检查 `backend/weibo_data.db` 文件是否存在 - 确认文件权限正常 - 尝试重新初始化数据库 ## 📝 更新日志 - 2024.05.15: 完成项目基础功能,包括用户信息、微博列表、关系链查询 - 2024.05.16: 添加评论功能、图片展示、响应式设计 - 2024.05.17: 清理代码,完成部署文档 - 2024.05.18: 更新 README 文档,新增数据库部署说明 - 2024.05.19: 添加监控功能,包括监控记录表和变更日志表,更新 README 说明 ## 📄 许可证 仅供学习和研究使用 ## 👨‍💻 开发者 本项目为内容安全课程作业