# TMCrawer **Repository Path**: StarsPython/tmcrawer ## Basic Information - **Project Name**: TMCrawer - **Description**: 天猫平台数据采集与数据分析 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-30 - **Last Updated**: 2025-11-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 天猫数据采集与聚类分析工具 ## 项目简介 本项目是一个完整的数据分析工具,集成了数据采集、聚类分析和可视化功能。主要功能包括: - 🔍 **数据采集**:自动采集天猫(淘宝)商品信息和用户评价 - 📊 **数据预处理**:智能筛选样本,生成唯一样本ID - 🎯 **聚类分析**:使用K-Means算法进行产品聚类,支持多维度特征融合 - 📈 **可视化分析**:生成丰富的图表和统计报告 - 📋 **产品分析**:分析产品客观属性和消费者偏好 ## 功能特性 ### 数据采集模块 - ✅ 支持自动登录(允许人工扫码) - ✅ 支持多品牌关键词搜索 - ✅ 智能数据去重 - ✅ 双格式导出(CSV + Excel) - ✅ 完整的日志记录 - ✅ 反爬虫策略(随机延迟、真实浏览器) ### 聚类分析模块 - ✅ 数据预处理:按销量排序,保留80个样本 - ✅ 文本特征提取:使用jieba分词 + TF-IDF - ✅ 数值特征提取:价格、销量、评分、星级(标准化处理) - ✅ 特征融合:支持文本和数值特征加权融合 - ✅ 权重优化:自动计算或网格搜索最优权重 - ✅ K-Means聚类:使用肘部法则确定K值,K-Means++初始化 - ✅ 质量评估:轮廓系数、Calinski-Harabasz、Davies-Bouldin指数 ### 可视化模块 - ✅ 聚类散点分布图(PCA降维) - ✅ 肘部法则图 - ✅ 轮廓系数图 - ✅ 优化散点图(处理重叠点,显示质心和边界) - ✅ 产品客观属性分布图(价格、销量、评分) - ✅ 价格/销量/评分区间分布图 - ✅ 品牌销量占比分析图 - ✅ 产品功能分布分析图 - ✅ 用户评价词云图 ### 产品分析模块 - ✅ 产品客观属性分析(价格、销量、评分分布) - ✅ 消费者偏好分析(品牌占比、功能分布) - ✅ 用户评价分析(分词、词频、词云) ## 技术栈 - **Python 3.10+** - **Playwright** - 浏览器自动化 - **Pandas** - 数据处理 - **NumPy** - 数值计算 - **Scikit-learn** - 机器学习算法 - **Matplotlib** - 数据可视化 - **Jieba** - 中文分词 - **WordCloud** - 词云生成 - **Scipy** - 科学计算 - **OpenPyXL** - Excel导出 - **UV** - 依赖管理 ## 项目结构 ``` TMCrawer/ ├── src/ │ ├── crawler/ # 爬虫模块 │ │ ├── taobao_crawler.py # 主爬虫类 │ │ └── parser.py # 页面解析器 │ ├── data/ # 数据处理模块 │ │ └── exporter.py # 数据导出 │ ├── cluster/ # 聚类分析模块 │ │ ├── preprocessor.py # 数据预处理 │ │ ├── feature_extractor.py # 特征提取 │ │ ├── cluster_analyzer.py # 聚类分析 │ │ ├── visualizer.py # 可视化 │ │ ├── weight_optimizer.py # 权重优化 │ │ ├── scatter_optimizer.py # 散点图优化 │ │ └── product_analyzer.py # 产品分析 │ └── utils/ # 工具模块 │ ├── logger.py # 日志工具 │ └── config.py # 配置文件 ├── data/ # 数据目录 │ ├── taobao_data.csv # 原始数据 │ └── taobao_data_样本数据.csv # 预处理后的样本数据 ├── results/ # 结果目录 │ ├── 聚类散点分布图.png │ ├── 聚类散点分布优化图.png │ ├── 产品客观属性分布特征图.png │ ├── 价格区间分布图.png │ ├── 销量区间分布图.png │ ├── 评分星级分布图.png │ ├── 品牌销量占比分析图.png │ ├── 产品功能分布分析图.png │ ├── 用户评价词云图.png │ └── ... (各种CSV和Excel表格) ├── logs/ # 日志目录 ├── main.py # 主程序入口 ├── pyproject.toml # 项目配置 └── README.md # 项目说明 ``` ## 安装步骤 ### 1. 确保Python版本 ```bash python --version # 需要 Python 3.10 或更高版本 ``` ### 2. 安装UV(如果尚未安装) ```bash # Windows (PowerShell) irm https://astral.sh/uv/install.ps1 | iex # 或使用pip pip install uv ``` ### 3. 安装项目依赖 ```bash # 安装Python依赖 uv sync # 安装Playwright浏览器 uv run playwright install chromium ``` ## 使用方法 ### 完整流程(推荐) 运行完整的数据采集、聚类分析和图表生成流程: ```bash uv run python main.py ``` ### 仅使用现有数据(跳过数据采集) 如果已有数据文件,可以跳过数据采集步骤: ```bash uv run python main.py --skip-crawl ``` ### 指定输入文件 ```bash uv run python main.py --input-file data/taobao_data.csv ``` ### 高级选项 ```bash # 仅使用文本特征(不使用价格、销量等数值特征) uv run python main.py --text-only # 不进行权重优化(使用自动计算的权重) uv run python main.py --no-optimize # 跳过散点图优化 uv run python main.py --skip-scatter # 跳过产品分析 uv run python main.py --skip-analysis # 组合使用 uv run python main.py --skip-crawl --text-only --no-optimize ``` ### 单独运行各个模块 如果需要单独运行某个模块: ```bash # 仅数据采集 uv run python main.py --skip-scatter --skip-analysis # 仅聚类分析(需要先有数据) uv run python main.py --skip-crawl --skip-scatter --skip-analysis # 仅产品分析(需要先完成聚类分析) uv run python -m src.cluster.product_analyzer results/特征数据表.csv ``` ## 输出文件说明 ### 数据文件(data/目录) - `taobao_data.csv` - 原始采集数据 - `taobao_data_样本数据.csv` - 预处理后的80个样本(含样本ID) - `taobao_data_样本数据.xlsx` - Excel格式的样本数据 ### 聚类分析结果(results/目录) #### 图表文件 - `聚类散点分布图.png` - PCA降维后的聚类散点图 - `聚类散点分布优化图.png` - 优化后的散点图(含质心和边界) - `肘部法则图.png` - K值选择参考图 - `轮廓系数图.png` - 聚类质量评估图 #### 数据表格 - `聚类散点分布表.csv` - 散点分布数据 - `肘部法则表.csv` - 肘部法则数据 - `轮廓系数表.csv` - 轮廓系数数据 - `聚类质量评估表.csv` - 综合评估指标 - `聚类结果表.csv` - 聚类结果 - `特征数据表.csv` - 特征数据(含聚类类簇) - `产品名称分词处理结果表.csv` - 分词结果 - `产品名称特征提取结果表.csv` - TF-IDF特征 - `数值特征提取结果表.csv` - 数值特征 - `特征权重表.csv` - 特征权重 - `特征权重优化结果表.csv` - 权重优化结果(如果启用) ### 产品分析结果(results/目录) #### 图表文件 - `产品客观属性分布特征图.png` - 价格、销量、评分箱线图 - `价格区间分布图.png` - 价格区间分布 - `销量区间分布图.png` - 销量区间分布 - `评分星级分布图.png` - 评分和星级分布 - `品牌销量占比分析图.png` - 品牌占比分析 - `产品功能分布分析图.png` - 功能分布分析 - `用户评价词云图.png` - 评价词云图 #### 数据表格 - `产品客观属性分布特征表.csv/.xlsx` - 属性统计 - `价格区间分布表.csv/.xlsx` - 价格区间统计 - `销量区间分布表.csv/.xlsx` - 销量区间统计 - `评分星级分布表.csv/.xlsx` - 评分统计 - `品牌销量占比分析表.csv/.xlsx` - 品牌占比 - `产品功能分布分析表.csv/.xlsx` - 功能分布 - `用户评价词频表.csv/.xlsx` - 词频统计 ## 配置说明 可以在 `src/utils/config.py` 中修改以下配置: ```python # 搜索关键词 SEARCH_KEYWORDS = [ "usmile 电动牙刷", "飞利浦 电动牙刷", "舒克 电动牙刷", ] # 数据量配置 TARGET_TOTAL_RECORDS = 120 # 目标总记录数 PRODUCTS_PER_BRAND = 9 # 每个品牌抓取的产品数 COMMENTS_PER_PRODUCT = 4 # 每个产品抓取的评论数 # 延迟配置(秒) MIN_DELAY = 1.5 MAX_DELAY = 3.0 # 浏览器配置 HEADLESS = False # 设为True可启用无头模式 ``` ## 工作流程 1. **数据采集** - 自动打开浏览器 - 等待用户登录(扫码) - 搜索关键词并采集商品信息 - 导出原始数据 2. **数据预处理** - 读取原始数据 - 按产品销量降序排序 - 保留前80个样本 - 生成唯一样本ID 3. **特征提取** - 文本特征:jieba分词 + TF-IDF - 数值特征:价格、销量、评分、星级(标准化) - 特征融合:加权合并文本和数值特征 - 权重优化:自动计算或网格搜索 4. **聚类分析** - 使用肘部法则确定最优K值 - K-Means++初始化 - 执行聚类 - 评估聚类质量 5. **可视化** - 生成各类图表 - 优化散点图(处理重叠点) - 添加质心和边界 6. **产品分析** - 分析产品客观属性 - 分析消费者偏好 - 分析用户评价 ## 注意事项 1. **登录要求**:首次运行需要登录淘宝账号,请确保网络连接正常 2. **反爬虫**:程序已实现基本的反爬虫策略,但仍需注意: - 不要过于频繁运行 - 遵守网站使用条款 - 仅用于学习和研究目的 3. **数据准确性**:由于网站结构可能变化,部分数据可能无法完全提取 4. **网络环境**:建议在稳定的网络环境下运行 5. **中文字体**:程序会自动检测系统字体,如果图表中文显示为方框,请安装中文字体 ## 常见问题 ### Q: 浏览器无法启动? A: 请确保已安装Playwright浏览器:`uv run playwright install chromium` ### Q: 登录超时? A: 可以在代码中增加等待时间,或手动登录后重新运行程序 ### Q: 无法提取数据? A: 可能是页面结构变化,需要更新选择器。请查看日志文件了解详细错误信息 ### Q: 聚类结果不理想? A: 可以尝试: - 调整特征权重 - 修改K值范围 - 使用不同的权重计算方法(variance/pca/correlation) ### Q: 图表中文显示为方框? A: 程序会自动检测系统字体,如果仍有问题,可以手动安装中文字体 ### Q: 词云图无法生成? A: 请确保已安装wordcloud库:`uv sync` 或 `pip install wordcloud` ## 日志文件 程序运行日志保存在 `logs/` 目录下,文件名格式:`crawler_YYYYMMDD_HHMMSS.log` ## 开发说明 ### 添加新的搜索关键词 在 `src/utils/config.py` 中修改 `SEARCH_KEYWORDS` 列表。 ### 修改数据提取逻辑 在 `src/crawler/parser.py` 中修改相应的解析方法。 ### 调整聚类参数 在 `src/cluster/main.py` 或 `main.py` 中修改聚类相关参数。 ### 添加新的分析功能 在 `src/cluster/product_analyzer.py` 中添加新的分析方法。 ## 许可证 本项目仅供学习和研究使用,请遵守相关法律法规和网站使用条款。 ## 更新日志 ### v0.2.0 (2024-11-30) - ✨ 新增聚类分析功能 - ✨ 新增多维度特征融合 - ✨ 新增特征权重优化 - ✨ 新增散点图优化(质心、边界) - ✨ 新增产品客观属性分析 - ✨ 新增消费者偏好分析 - ✨ 新增用户评价词云分析 - ✨ 整合完整流程到main.py - 📝 更新README文档 ### v0.1.0 (2024-11-29) - 🎉 初始版本 - ✅ 实现基本爬取功能 - ✅ 支持CSV和Excel导出 - ✅ 实现数据去重 ## 贡献 欢迎提交Issue和Pull Request! ## 联系方式 如有问题或建议,请通过Issue反馈。