# ICCID批量查询工具 一个专为SimbaLink平台设计的ICCID批量查询工具,基于Selenium自动化技术,支持大量数据的批量处理和实时结果保存。 ## 🚀 核心特性 ### ✨ 智能批量处理 - **自动批次分割**:超过50个查询项时自动分割为多个子批次 - **批次大小控制**:每批最多50个查询项,符合平台限制 - **智能重试机制**:失败批次自动重试2次,提高成功率 ### 💾 实时数据保存 - **即时保存**:每批次查询完成后立即保存结果到CSV文件 - **追加模式**:支持多次运行,新结果追加到现有文件 - **结构化输出**:包含批次号、ICCID、租户信息等完整数据 ### 🔧 技术优化 - **Chrome浏览器优化**:解决LatencyInfo错误,减少日志输出 - **多编码支持**:自动检测文件编码(UTF-8、GBK、UTF-8-SIG、CP1252) - **XPath容错**:多种表格结构支持,提高页面兼容性 - **输入框清理**:彻底清空输入框,避免数据残留 ## 📋 系统要求 - **Python 3.7+** - **Chrome浏览器**(程序会自动下载ChromeDriver) - **Windows/Linux/macOS** ## 🛠️ 安装与配置 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 准备数据文件 将ICCID号码放入 `text.txt` 文件,每行一个: ``` 89882390001035539593 89882390001035538041 89882390001035536771 ... ``` ### 3. 配置参数(可选) 在 `pa.py` 文件中修改以下配置: ```python MAX_PER_BATCH = 50 # 每批最大查询项数 OUTPUT_CSV = "results.csv" # 输出文件名 ICCID_FILE = "text.txt" # 输入文件名 HEADLESS = False # 是否无头模式 BATCH_RETRY_COUNT = 2 # 重试次数 ``` ## 🚀 使用方法 ### 基本使用 ```bash python pa.py ``` ### 运行流程 1. **读取数据**:从 `text.txt` 读取ICCID列表 2. **批次分割**:按50个一组分割数据 3. **自动登录**:使用内置Cookie自动登录 4. **批量查询**:逐批次执行查询 5. **实时保存**:查询结果立即保存到CSV ### 输出示例 ``` 使用编码 utf-8 成功读取 1138 个查询项 总共读取到 1138 个查询项 将分为 23 个批次处理 已通过Cookie自动登录,开始批量查询... === 处理批次 1/23 === 本批次包含 50 个查询项 本批次获得 45 条结果 ✅ 已保存 45 条结果到 results.csv === 处理批次 2/23 === 本批次包含 50 个查询项 本批次获得 48 条结果 ✅ 已保存 48 条结果到 results.csv ... ``` ## 📊 输出结果 ### CSV文件结构 | 列名 | 说明 | 示例 | |------|------|------| | batch | 批次号 | 1, 2, 3... | | ICCID | ICCID号码 | 89882390001035539593 | | 租户 | 租户信息 | 租户名称 | | 列3+ | 其他查询结果 | 状态、类型等 | ### 统计报告 ``` 📊 批量查询完成报告 ================================================== 总查询项: 1138 总批次数: 23 成功批次: 23 失败批次: 0 成功率: 100.0% 总保存结果数: 1089 ================================================== ✅ 所有结果已实时保存到 results.csv ``` ## 🔧 技术实现 ### 核心技术栈 - **Selenium WebDriver**:浏览器自动化 - **ChromeDriverManager**:自动管理Chrome驱动 - **Pandas**:数据处理和CSV操作 - **WebDriverWait**:智能等待机制 ### 关键功能实现 #### 1. 智能批次分割 ```python if len(batch) > MAX_PER_BATCH: sub_batches = [batch[i:i+MAX_PER_BATCH] for i in range(0, len(batch), MAX_PER_BATCH)] # 处理每个子批次... ``` #### 2. 实时结果保存 ```python if results: batch_results = [{"batch": batch_index, "cells": row_cells} for row_cells in results] saved_count = save_results_to_csv(batch_results, OUTPUT_CSV) print(f"✅ 已保存 {saved_count} 条结果到 {OUTPUT_CSV}") ``` #### 3. Chrome浏览器优化 ```python chrome_opts.add_argument("--disable-logging") chrome_opts.add_argument("--disable-gpu-logging") chrome_opts.add_argument("--log-level=3") chrome_opts.add_argument("--silent") ``` ## 📁 项目结构 ``` pa/ ├── pa.py # 主程序文件(289行,精简版) ├── requirements.txt # 依赖包列表 ├── text.txt # 输入数据文件(1138行ICCID) ├── results.csv # 输出结果文件 ├── response_parser.py # 响应解析工具 └── README.md # 项目说明文档 ``` ## ⚠️ 注意事项 ### Cookie管理 - 程序内置有效Cookie,自动处理登录 - Cookie过期时需要重新获取并更新配置 ### 网络要求 - 需要稳定的网络连接 - 确保能正常访问 `https://prod-eu-cmp.simbalinkglobal.com` ### 页面兼容性 - 程序支持多种表格结构 - 如果页面更新,可能需要调整XPath选择器 ## 🐛 故障排除 ### 常见问题及解决方案 #### 1. Chrome驱动问题 ``` 问题:ChromeDriver版本不匹配 解决:程序会自动下载匹配的ChromeDriver ``` #### 2. Cookie过期 ``` 问题:登录失败,提示认证错误 解决:重新登录网站,获取新Cookie并更新配置 ``` #### 3. 输入框清理失败 ``` 问题:输入框残留数据导致查询失败 解决:程序已优化清理逻辑,支持多种清理方式 ``` #### 4. 网络连接问题 ``` 问题:页面加载超时 解决:检查网络连接,确认目标网站可访问 ``` ## 📈 性能优化 ### 已实现的优化 - ✅ **代码精简**:从600行减少到289行(减少52%) - ✅ **浏览器优化**:禁用日志、图片加载等非必要功能 - ✅ **智能等待**:减少不必要的等待时间 - ✅ **内存优化**:实时保存,避免大量数据驻留内存 ### 性能指标 - **处理速度**:每批次约1-2秒 - **成功率**:>95%(在正常网络条件下) - **内存占用**:<100MB - **支持数据量**:无限制(分批处理) ## 🔄 版本历史 ### v2.0 (当前版本) - 🚀 **代码精简**:从600行减少到289行 - ⚡ **性能优化**:解决Chrome浏览器LatencyInfo错误 - 💾 **实时保存**:查询结果立即保存,避免数据丢失 - 🔄 **智能重试**:失败批次自动重试机制 - 📊 **详细统计**:完整的处理报告和成功率统计 ### v1.0 - 基础批量查询功能 - 多线程处理支持 - 基础错误处理 ## 📄 许可证 MIT License - 可自由使用、修改和分发 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个工具! --- **注意**:本工具仅用于合法的数据查询目的,请遵守相关网站的使用条款。