# crawler_client **Repository Path**: wohehui/crawler_client ## Basic Information - **Project Name**: crawler_client - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-28 - **Last Updated**: 2026-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电商爬虫客户端 一个功能完整的电商平台爬虫客户端,支持淘宝和Goofish平台的商品搜索、数据抓取、分析和管理。 ## 功能特性 - **多平台支持**:同时支持淘宝和Goofish两个电商平台 - **自动化操作**:使用Selenium模拟浏览器操作,支持自动登录和验证码处理 - **数据管理**:内置SQLite数据库,支持商品数据的增删改查 - **数据分析**:内置价格分布和销量分析功能 - **图片管理**:支持商品图片的下载和管理 - **店铺分析**:支持淘宝店铺的批量商品抓取和分析 - **用户友好界面**:使用PyQt5开发的图形化界面,操作简单直观 ## 项目结构 ``` crawler_client/ ├── crawlers/ # 爬虫模块 │ ├── taobao/ # 淘宝爬虫 │ │ └── taobao_crawler.py │ └── goofish/ # Goofish爬虫 │ └── goofish_crawler.py ├── storage/ # 数据存储模块 │ ├── db_init.py # 数据库初始化 │ └── db_operations.py # 数据库操作 ├── ui/ # 用户界面模块 │ ├── components/ # UI组件 │ └── dialogs/ # 对话框 ├── utils/ # 工具模块 │ ├── image_processor.py # 图片处理 │ └── common.py # 通用工具函数 ├── config/ # 配置模块 ├── data/ # 数据目录 │ ├── images/ # 图片存储 │ └── db/ # 数据库文件 ├── main.py # 主应用程序 └── README.md # 项目文档 ``` ## 安装说明 ### 1. 环境要求 - Python 3.7+ - Chrome浏览器 - ChromeDriver (与Chrome版本匹配) ### 2. 安装依赖 ```bash # 安装Python依赖 pip install -r requirements.txt ``` ### 3. 配置ChromeDriver - 下载与您的Chrome浏览器版本匹配的ChromeDriver - 将ChromeDriver.exe文件放在项目根目录 ## 使用方法 ### 1. 启动应用程序 ```bash python main.py ``` ### 2. 登录淘宝 - 在"设置"标签页中输入淘宝账号和密码 - 点击"保存设置"按钮 - 在"商品搜索"标签页中,平台选择"taobao" - 点击"搜索"按钮,系统会自动打开浏览器并登录淘宝 - 如果遇到验证码,请按照提示完成验证 ### 3. 搜索商品 - 在"商品搜索"标签页中 - 输入搜索关键词 - 选择搜索平台(taobao或goofish) - 点击"搜索"按钮 - 等待搜索完成,结果会显示在表格中 ### 4. 管理数据 - 在"数据管理"标签页中 - 点击"刷新数据"按钮查看所有抓取的商品 - 选择商品后点击"删除选中"按钮删除数据 - 点击"导出数据"按钮导出数据(开发中) ### 5. 分析店铺 - 在"店铺分析"标签页中 - 输入淘宝店铺URL:示例https://shop472996062.taobao.com/ - 点击"分析店铺"按钮 - 系统会抓取店铺内的所有商品并进行分析 ### 6. 管理图片 - 在"图片管理"标签页中 - 点击"下载图片"按钮下载商品图片 - 点击"查看图片"按钮查看已下载的图片 ## 数据库结构 ### 商品表 (products) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | INTEGER | 自增主键 | PRIMARY KEY AUTOINCREMENT | | title | TEXT | 商品标题 | NOT NULL | | custom_title | TEXT | 自定义标题 | - | | price | TEXT | 商品价格 | - | | sales_num | TEXT | 销量 | - | | pic_url | TEXT | 图片URL | - | | brand | TEXT | 品牌 | NOT NULL | | model | TEXT | 型号 | NOT NULL | | link | TEXT | 商品链接 | - | | platform | TEXT | 平台 | - | | description | TEXT | 商品描述 | - | | attributes | TEXT | 商品属性 | - | | stock | INTEGER | 库存 | - | | rating | REAL | 评分 | - | | review_count | INTEGER | 评价数量 | - | | listed_time | TIMESTAMP | 上架时间 | - | | promotion | TEXT | 促销信息 | - | | category | TEXT | 类目 | - | | seller_id | TEXT | 卖家ID | - | | original_price | TEXT | 原价 | - | | taobao_id | TEXT | 淘宝商品ID | NOT NULL | | local_pics | TEXT | 本地图片 | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | TIMESTAMP | 更新时间 | DEFAULT CURRENT_TIMESTAMP | **唯一约束**: UNIQUE(taobao_id, brand, model) ### 店铺表 (shops) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | TEXT | 店铺ID | PRIMARY KEY | | name | TEXT | 店铺名称 | - | | url | TEXT | 店铺URL | - | | platform | TEXT | 平台 | - | | rating | REAL | 店铺评分 | - | | shop_type | TEXT | 店铺类型 | - | | follower_count | INTEGER | 粉丝数量 | - | | main_category | TEXT | 主营类目 | - | | open_time | TEXT | 营业时间 | - | | location | TEXT | 所在地 | - | | sales_volume | INTEGER | 总销量 | - | | product_count | INTEGER | 商品数量 | - | | description | TEXT | 店铺描述 | - | | certification | TEXT | 认证信息 | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | ### 搜索历史表 (search_history) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | INTEGER | 历史ID | PRIMARY KEY AUTOINCREMENT | | keyword | TEXT | 搜索关键词 | NOT NULL | | platform | TEXT | 平台 | - | | result_count | INTEGER | 搜索结果数量 | - | | search_duration | INTEGER | 搜索耗时 | - | | user_id | TEXT | 用户ID | - | | filters | TEXT | 搜索过滤条件 | - | | sort_by | TEXT | 排序方式 | - | | search_time | TIMESTAMP | 搜索时间 | DEFAULT CURRENT_TIMESTAMP | ### 图片表 (images) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | INTEGER | 图片ID | PRIMARY KEY AUTOINCREMENT | | product_id | TEXT | 商品ID | - | | filename | TEXT | 文件名 | - | | url | TEXT | 图片URL | - | | local_path | TEXT | 本地路径 | - | | image_type | TEXT | 图片类型 | - | | width | INTEGER | 图片宽度 | - | | height | INTEGER | 图片高度 | - | | order_index | INTEGER | 图片顺序 | - | | size | INTEGER | 图片大小(字节) | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | ### 评价表 (reviews) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | INTEGER | 评价ID | PRIMARY KEY AUTOINCREMENT | | product_id | TEXT | 商品ID | - | | user_id | TEXT | 用户ID | - | | content | TEXT | 评价内容 | - | | rating | INTEGER | 评分 | - | | review_time | TIMESTAMP | 评价时间 | - | | images | TEXT | 评价图片 | - | | attributes | TEXT | 购买属性 | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | ### 价格历史表 (price_history) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | INTEGER | 记录ID | PRIMARY KEY AUTOINCREMENT | | product_id | TEXT | 商品ID | - | | price | TEXT | 价格 | - | | date | TIMESTAMP | 记录时间 | - | | promotion | TEXT | 促销信息 | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | ### 类目表 (categories) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | TEXT | 类目ID | PRIMARY KEY | | name | TEXT | 类目名称 | - | | parent_id | TEXT | 父类目ID | - | | level | INTEGER | 类目层级 | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | ### 用户表 (users) | 字段名 | 类型 | 描述 | 约束 | |-------|------|------|------| | id | TEXT | 用户ID | PRIMARY KEY | | username | TEXT | 用户名 | - | | preferences | TEXT | 偏好设置 | - | | created_at | TIMESTAMP | 创建时间 | DEFAULT CURRENT_TIMESTAMP | ## 注意事项 1. **反爬措施**:淘宝有严格的反爬措施,请合理控制爬取频率,避免账号被封禁 2. **验证码处理**:登录淘宝时可能需要手动完成验证码,系统会给出相应提示 3. **数据存储**:数据存储在SQLite数据库中,文件位于`data/db/crawler_data.db` 4. **图片存储**:图片默认存储在`data/images`目录中 5. **ChromeDriver**:请确保ChromeDriver版本与Chrome浏览器版本匹配 ## 故障排除 ### 常见问题 1. **ChromeDriver启动失败** - 检查ChromeDriver版本是否与Chrome浏览器匹配 - 确保ChromeDriver.exe文件位于项目根目录 2. **登录失败** - 检查账号密码是否正确 - 检查网络连接是否正常 - 如果遇到验证码,请按照提示完成验证 3. **搜索无结果** - 检查关键词是否正确 - 检查网络连接是否正常 - 检查平台选择是否正确 4. **数据保存失败** - 检查数据库文件权限 - 确保数据目录存在且可写 ## 开发说明 ### 扩展爬虫 要添加新的爬虫平台,请在`crawlers`目录下创建新的爬虫模块,并实现以下接口: ```python class NewPlatformCrawler: def init_driver(self): """初始化浏览器驱动""" pass def search(self, driver, keyword): """搜索商品""" pass def close(self): """关闭浏览器驱动""" pass ``` ### 扩展功能 要添加新功能,请在相应的模块中添加代码,并在UI中添加相应的控件和事件处理。 ## 许可证 本项目仅供学习和研究使用,不得用于商业用途。 ## 更新日志 - v1.0.0 (2026-01-28): 初始版本,实现基本功能 ## 联系方式 如有问题或建议,请联系项目维护者。