Files
pa/README.md

237 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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来改进这个工具
---
**注意**:本工具仅用于合法的数据查询目的,请遵守相关网站的使用条款。