# SmartBackend **Repository Path**: weric1018/Smart-backend ## Basic Information - **Project Name**: SmartBackend - **Description**: 智能运营-后台 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 跨境电商平台爬虫系统 支持多个跨境电商平台的商品数据爬取,目前已实现eBay平台。 ## 🚀 快速开始 **5分钟快速上手:** [QUICK_START.md](QUICK_START.md) ```bash # 1. 安装依赖 pip install -r requirements.txt playwright install chromium # 2. 运行浏览器模式(推荐) python main_browser.py ``` ## 功能特点 - 🚀 可扩展架构,支持多平台 - ⚡ 分布式并发爬取(NEW!) - 多线程并发执行,3-5倍效率提升 - 自动检测搜索结果总页数 - 支持爬取全部或指定页数范围 - 任务队列管理,失败自动重试 - 实时进度监控和统计 - 🛡️ 完善的反爬策略 - 智能代理池管理(独立/共享) - 三种代理选择策略(随机/加权/轮询) - 代理健康检查和自动禁用 - 随机User-Agent轮换 - 浏览器指纹模拟 - 自适应请求延迟 - Cookie和Referer管理 - 指数退避重试机制 - 🔄 选择器自适应 - 自动检测页面结构变化 - 智能更新CSS选择器 - 无需手动修改代码 - 支持多平台扩展 - 📊 实时监控和告警 - 成功率监控 - 封禁检测 - 连续失败告警 - 健康状态评估 - 💾 本地数据存储(JSON/CSV) - 📝 完整的日志记录 ## 项目结构 ``` crawler/ ├── config/ # 配置文件 │ └── settings.py # 全局配置 ├── core/ # 核心引擎 │ ├── base_crawler.py # 爬虫基类 │ ├── browser_crawler.py # 浏览器爬虫基类 │ ├── selector_adapter.py # 选择器自适应 ⭐ │ ├── distributed_crawler.py # 分布式协调器 ⭐ NEW! │ ├── task_queue.py # 任务队列管理 ⭐ NEW! │ ├── proxy_pool.py # 代理池 │ ├── proxy_manager.py # 代理管理器 │ └── crawler_monitor.py # 监控系统 ├── platforms/ # 平台实现 │ ├── ebay_crawler.py # eBay爬虫(基础) │ └── ebay_browser_crawler.py # eBay浏览器爬虫(高级) ├── storage/ # 数据存储 │ └── file_storage.py # 文件存储 ├── utils/ # 工具类 │ ├── logger.py # 日志工具 │ └── anti_spider.py # 反爬工具 ├── examples/ # 示例脚本 │ ├── proxy_test.py # 代理池测试 │ ├── monitor_test.py # 监控器测试 │ └── distributed_test.py # 分布式测试 ⭐ NEW! ├── docs/ # 文档 │ ├── ANTI_SPIDER_MECHANISM.md # 反爬机制说明 │ ├── EBAY_ANTI_DETECTION.md # eBay应对策略 │ ├── SELECTOR_ADAPTER.md # 选择器自适应 │ └── DISTRIBUTED_CRAWLER.md # 分布式爬虫 ⭐ NEW! ├── data/ # 数据目录 ├── logs/ # 日志目录 ├── main.py # 主程序(基础模式) ├── main_browser.py # 主程序(浏览器模式) ├── main_distributed.py # 主程序(分布式模式)⭐ NEW! └── requirements.txt # 依赖包 ``` ## 安装 1. 安装Python依赖: ```bash pip install -r requirements.txt ``` 2. 安装Playwright浏览器(用于浏览器模式): ```bash playwright install chromium ``` ## 使用方法 ### 1. 分布式模式(推荐 - 高效率)⭐ NEW! 运行分布式爬虫,支持多线程并发,3-5倍效率提升: ```bash python main_distributed.py ``` 特性: - 自动检测总页数 - 多线程并发爬取 - 任务队列管理 - 失败自动重试 - 实时进度监控 ### 2. 浏览器模式(生产环境) 运行浏览器爬虫(推荐用于eBay等严格平台): ```bash # 首次使用需安装浏览器驱动 playwright install chromium # 运行浏览器爬虫 python main_browser.py ``` ### 3. 基础模式(快速测试) 运行基础爬虫(适合测试): ```bash python main.py ``` ### 代码示例 **基础爬虫:** ```python from platforms.ebay_crawler import EbayCrawler from storage.file_storage import FileStorage from config.settings import CRAWLER_CONFIG, ANTI_SPIDER_CONFIG, EBAY_CONFIG, DATA_DIR # 初始化爬虫 crawler = EbayCrawler( config={**CRAWLER_CONFIG, **EBAY_CONFIG}, anti_spider_config=ANTI_SPIDER_CONFIG ) # 搜索商品 products = crawler.search('laptop', max_pages=3) # 保存数据 storage = FileStorage(DATA_DIR) storage.save_json(products, 'laptop_search', platform='ebay') storage.save_csv(products, 'laptop_search', platform='ebay') ``` **浏览器爬虫(处理JS渲染):** ```python from platforms.ebay_browser_crawler import EbayBrowserCrawler # 初始化浏览器爬虫 crawler = EbayBrowserCrawler( config={**CRAWLER_CONFIG, **EBAY_CONFIG, **BROWSER_CONFIG}, anti_spider_config=ANTI_SPIDER_CONFIG, proxy_manager=proxy_manager, monitor=monitor ) # 搜索商品(自动处理JS渲染) products = crawler.search('laptop', max_pages=2) ``` ## 配置说明 ### 反爬策略配置 (config/settings.py) ```python ANTI_SPIDER_CONFIG = { 'use_proxy': False, # 是否使用代理 'rotate_user_agent': True, # 轮换User-Agent 'use_cookies': True, # 使用Cookies 'random_delay': True, # 随机延迟 'delay_range': (1, 3), # 延迟范围(秒) 'adaptive_delay': True, # 自适应延迟 'proxy_strategy': 'weighted', # 代理选择策略 'referers': [ # Referer列表 'https://www.google.com/', 'https://www.bing.com/', ] } ``` ### 代理池配置 ```python PROXY_POOL_CONFIG = { 'shared': { # 共享代理池 'proxy_list': [ 'http://proxy1:8080', 'http://proxy2:8080', ], 'max_consecutive_fails': 3, # 最大连续失败次数 'health_check_interval': 300, # 健康检查间隔(秒) 'test_url': 'http://httpbin.org/ip', 'test_timeout': 10, }, 'ebay': { # eBay独立代理池 'proxy_list': [], 'max_consecutive_fails': 3, 'health_check_interval': 300, } } ``` ### 监控配置 ```python MONITOR_CONFIG = { 'max_consecutive_failures': 5, # 最大连续失败次数 'min_success_rate': 0.5, # 最小成功率 'failure_window': 300, # 失败窗口期(秒) } ``` ## 数据格式 爬取的商品数据包含以下字段: - `title`: 商品标题 - `price`: 价格(数值) - `price_raw`: 原始价格文本 - `url`: 商品链接 - `image`: 商品图片 - `shipping`: 运费信息 - `location`: 发货地 - `seller`: 卖家信息 - `item_id`: 商品ID ## 扩展新平台 1. 在 `platforms/` 目录创建新的爬虫类 2. 继承 `BaseCrawler` 基类 3. 实现必要的方法: - `parse_product_list()`: 解析商品列表 - `parse_product_detail()`: 解析商品详情 - `search()`: 搜索功能 示例: ```python from core.base_crawler import BaseCrawler class AmazonCrawler(BaseCrawler): def parse_product_list(self, html: str): # 实现Amazon商品列表解析 pass def parse_product_detail(self, html: str): # 实现Amazon商品详情解析 pass def search(self, keyword: str, **kwargs): # 实现Amazon搜索 pass ``` ## 注意事项 1. 请遵守目标网站的robots.txt规则 2. 合理设置请求频率,避免对服务器造成压力 3. 仅用于学习和研究目的 4. 商业使用需遵守相关法律法规 ## 反爬虫机制详解 ### 核心文档 - [反爬虫机制实现说明](docs/ANTI_SPIDER_MECHANISM.md) - 完整的反爬虫技术文档 - [eBay反爬虫检测应对策略](docs/EBAY_ANTI_DETECTION.md) - eBay专项应对方案 ### 满足eBay核心挑战 #### ✅ IP封锁应对 - **独享动态住宅IP池**:支持独立/共享代理池架构 - **单IP访问频率控制**:可配置单IP最大请求数和轮换间隔 - **自动轮换机制**:基于评分的智能代理选择 - **代理类型识别**:区分住宅代理和数据中心代理 #### ✅ 请求频率控制 - **随机延迟≥30秒/次**:默认配置30-60秒延迟 - **自适应延迟**:根据响应时间和成功率动态调整 - **模拟真实浏览路径**:随机鼠标移动、页面滚动、停留时间 - **完整浏览器请求头**:包含所有现代浏览器特征 #### ✅ 指纹检测应对 - **禁用自动化特征**:覆盖webdriver、plugins等标识 - **指纹浏览器模拟**:多种设备指纹配置和轮换 - **真实环境模拟**:viewport、screen、locale、timezone等 #### ✅ 动态加载处理 - **Playwright浏览器自动化**:完整支持JS渲染 - **智能等待机制**:等待DOM元素加载完成 - **懒加载触发**:模拟滚动触发动态内容加载 ### 技术特性 核心特性: - ✅ 智能代理池(独立/共享架构) - ✅ 三种代理选择策略(随机/加权/轮询) - ✅ 代理健康检查和评分 - ✅ 自适应延迟策略 - ✅ 浏览器指纹模拟 - ✅ Playwright/Selenium支持 - ✅ 实时监控和告警 - ✅ 封禁检测和自动响应 ## 测试工具 ### 测试代理池 ```bash python examples/proxy_test.py ``` ### 测试监控器 ```bash python examples/monitor_test.py ``` ### 管理选择器(NEW!) ```bash # 查看选择器统计 python manage_selectors.py stats # 测试选择器有效性 python manage_selectors.py test # 检测新选择器 python manage_selectors.py detect # 重置为默认 python manage_selectors.py reset ``` 详细说明:[选择器自适应机制](docs/SELECTOR_ADAPTER.md) ## 后续计划 ### v2.1.0 - 多平台支持 - [ ] Amazon爬虫 - [ ] 基础爬虫实现 - [ ] 浏览器爬虫实现 - [ ] 选择器自适应 - [ ] AliExpress爬虫 - [ ] 基础爬虫实现 - [ ] 浏览器爬虫实现 - [ ] 选择器自适应 - [ ] Walmart爬虫 ### v2.2.0 - 数据处理 - [ ] 数据库存储(MySQL/MongoDB) - [ ] 数据清洗模块 - [ ] 数据去重 - [ ] 数据导出(Excel/API) ### v3.0.0 - 高级功能 - [ ] 分布式爬取 - [ ] Web管理界面 - [ ] 验证码识别集成 - [ ] 云端部署支持 - [ ] RESTful API ## 项目状态 - ✅ eBay爬虫 - 完成 - ✅ 反爬虫机制 - 完成 - ✅ 选择器自适应 - 完成 - ✅ 监控系统 - 完成 - ✅ 代理池管理 - 完成 - 📝 Amazon爬虫 - 待开发 - 📝 AliExpress爬虫 - 待开发 - 📝 数据库存储 - 待开发 ## 文档索引 - [README.md](README.md) - 项目概述 - [QUICK_START.md](QUICK_START.md) - 快速开始 - [STRUCTURE.md](STRUCTURE.md) - 项目结构 - [CHANGELOG.md](CHANGELOG.md) - 更新日志 - [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - 故障排查 - [docs/SELECTOR_ADAPTER.md](docs/SELECTOR_ADAPTER.md) - 选择器自适应 - [docs/ANTI_SPIDER_MECHANISM.md](docs/ANTI_SPIDER_MECHANISM.md) - 反爬机制 - [docs/EBAY_ANTI_DETECTION.md](docs/EBAY_ANTI_DETECTION.md) - eBay策略 - [docs/COMPARISON.md](docs/COMPARISON.md) - 模式对比