自动采集全球API 5L SMLS(无缝钢管)认证厂家数据的Python工具
从美国石油协会(API)myCerts系统自动采集API 5L SMLS认证厂家信息,智能筛选并导出为CSV格式,适用于:
- 🔍 市场调研与竞争分析
- 📊 供应商资质验证
- 🌍 全球认证厂家分布研究
- 📈 行业数据统计分析
- ✅ 自动分页采集 - 无需手动翻页,自动获取所有数据
- ✅ 多重SMLS识别 - 产品ID + 规格ID + 关键词 + 正则表达式四重验证
- ✅ 智能地域筛选 - 自动排除中国厂家(支持多种名称变体)
- ✅ 网络容错机制 - 自动重试3次,指数退避策略
- ✅ 实时进度显示 - 清晰展示采集进度和统计信息
- ✅ 详细统计报告 - 包含数据总览、国家分布Top 20等
- ✅ CSV标准输出 - UTF-8-BOM编码,Excel完美兼容
- ✅ 40+数据字段 - 涵盖公司、认证、联系、产品等全方位信息
- Python 3.7 或更高版本
- pip 包管理器
# 1. 克隆项目
git clone https://github.com/Alexxiang2008/api5l-smls-collector.git
cd api5l-smls-collector
# 2. 安装依赖
pip install -r requirements.txt
# 3. 运行!
python api5l_smls_collector_enhanced.py就这么简单!数据会自动保存为 api5l_smls_licensees_YYYYMMDD_HHMMSS.csv
在首次使用前,建议先运行探测脚本了解API数据结构:
python api_structure_explorer.py输出内容:
- 📄
api_sample_response.json- 5条样本数据 - 📊 所有可用字段列表(40+)
- 🔍 SMLS产品特征分析
- 💡 配置建议
何时需要运行探测脚本:
- 首次使用本工具
- API数据结构可能发生变化
- SMLS产品识别不准确时
- 需要了解新增字段
python api5l_smls_collector_enhanced.py采集流程:
🚀 开始数据采集
↓
📄 获取第1页 → 解析总页数
↓
📄 循环获取所有页面
↓
✅ SMLS产品识别
↓
🚫 排除中国厂家
↓
💾 保存到CSV文件
↓
📊 生成统计报告
控制台输出:
================================================================================
🌍 API 5L SMLS认证厂家数据采集器(增强版)
================================================================================
⏰ 开始时间: 2024-01-15 10:30:00
🎯 目标: 采集全球API 5L SMLS认证厂家(排除中国)
🚀 开始数据采集...
📄 获取第 1 页...
📊 数据总览:
总记录数: 420
总页数: 3
每页数量: 200
✅ 第 1 页: 获取 200 条,SMLS 150 条,有效 120 条
📄 获取第 2/3 页...
✅ 第 2 页: 获取 200 条,有效 118 条
📄 获取第 3/3 页...
✅ 第 3 页: 获取 20 条,有效 15 条
💾 正在保存到CSV文件: api5l_smls_licensees_20240115_103045.csv
✅ 成功保存 253 条记录
================================================================================
📊 采集统计报告
================================================================================
【数据统计】
总获取记录数: 420
SMLS产品匹配数: 300
排除中国厂家数: 47
最终输出记录数: 253
SMLS匹配率: 71.4%
中国厂家占比: 15.7%
【国家分布 Top 20】
1. UNITED STATES 98 (38.7%)
2. JAPAN 35 (13.8%)
3. GERMANY 28 (11.1%)
4. ITALY 22 ( 8.7%)
5. SOUTH KOREA 18 ( 7.1%)
...
================================================================================
✅ 采集完成!
================================================================================
📁 输出文件: api5l_smls_licensees_20240115_103045.csv
⏱️ 耗时: 8.52 秒
🎉 成功采集 253 条SMLS认证厂家数据
CSV文件包含的字段(40+):
| 类别 | 字段示例 |
|---|---|
| 基本信息 | companyLegalName, companyName, companyId |
| 认证信息 | certificationNumber, status, certificationType, licenseNumber |
| 地址信息 | country, countryCode, city, state, address, postalCode |
| 联系方式 | phoneNumber, faxNumber, emailAddress, website |
| 联系人 | contactName, contactTitle, technicalContact |
| 产品信息 | productIds, products, specificationIds, registrationScope |
| 时间信息 | licenseExpirationDate, initialCertificationDate, lastAuditDate |
| 审核信息 | auditingOrganization, certificationBody |
| 工厂信息 | facilityId, facilityName, facilityType |
根据探测脚本结果,在 api5l_smls_collector_enhanced.py 中调整以下配置:
# 第42-54行
self.smls_product_ids: Set[int] = {217, 218} # 根据实际调整
self.smls_spec_ids: Set[int] = {48, 49} # 根据实际调整
self.smls_keywords = [
'SMLS', 'Seamless', 'SEAMLESS',
'seamless pipe', 'seamless tube',
'Seamless Pipe', 'Seamless Tube'
]如需调整排除规则,修改第57-66行:
self.china_variants = {
'CHINA', 'CN', 'CHN', 'PRC',
'PEOPLE\'S REPUBLIC OF CHINA',
'HONG KONG', 'HONGKONG', 'HK',
'MACAU', 'MACAO', 'MO',
'TAIWAN', 'TW', 'TWN',
# 可添加更多变体
}如需添加或删除CSV字段,修改第69-92行的 self.csv_fields 列表。
# 超时时间(第189行)
timeout=30 # 秒
# 重试次数(第181行)
max_retries: int = 3
# 页面延迟(第273行)
time.sleep(0.5) # 秒现象:
⚠️ 请求失败(第1次尝试): Connection timeout
⏳ 2秒后重试...
解决方案:
- 检查网络连接
- 确认能访问
https://mycerts.api.org - 增加超时时间(第189行)
- 检查是否需要代理
现象:
- 输出数据过多/过少
- 包含非SMLS产品
解决方案:
- 运行探测脚本分析实际数据结构
- 根据建议调整
smls_product_ids和smls_spec_ids - 检查关键词列表是否完整
- 查看样本数据中的
products和registrationScope字段
现象:
- Excel打开CSV显示乱码
解决方案:
- 本工具已使用
utf-8-sig编码(带BOM) - Excel 2016+应自动识别
- 或在Excel中:数据 → 从文本/CSV → 文件原点选择"65001: Unicode (UTF-8)"
现象:
- 输出结果中仍有中国厂家
解决方案:
- 检查该厂家的
country和countryCode字段实际值 - 将新变体添加到
china_variants集合中 - 重新运行采集
现象:
- CSV中某些字段为空
解决方案:
- 这是正常的,API数据本身可能不完整
- 运行探测脚本查看样本数据
- 某些字段仅部分厂家提供
- API端点:
https://mycerts.api.org/api/Search - 请求方法: GET
- 认证方式: 无需认证(公开API)
- 访问限制: 建议添加适当延迟,避免频繁请求
| 参数 | 值 | 说明 |
|---|---|---|
| certificationNumber | 5L- | 筛选API 5L认证 |
| statusIds | 402 | 仅活跃状态 |
| pageNdx | 1, 2, 3... | 页码(从1开始) |
| pageSize | 200 | 每页数量(最大200) |
{
"totalRowCount": 420,
"totalPages": 3,
"currentPage": 1,
"_embedded": {
"searchResults": [
{
"companyName": "ABC Steel Corp",
"country": "UNITED STATES",
"certificationNumber": "5L-0001",
"products": "SMLS PIPE",
...
}
]
}
}欢迎提交Issue和Pull Request!
# Fork并克隆项目
git clone https://github.com/YOUR_USERNAME/api5l-smls-collector.git
cd api5l-smls-collector
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 运行测试
python api_structure_explorer.py
python api5l_smls_collector_enhanced.py- 遵循 PEP 8 代码风格
- 使用类型提示(Type Hints)
- 添加详细的docstring
- 保持单一职责原则
- ✨ 初始发布
- ✅ 自动分页采集功能
- ✅ 多重SMLS产品识别
- ✅ 中国厂家智能排除
- ✅ 网络容错与重试机制
- ✅ 详细统计报告
- ✅ CSV标准输出
本项目采用 MIT License 开源协议。
- 数据来源:API myCerts
- 美国石油协会(American Petroleum Institute)
⭐ 如果这个项目对您有帮助,欢迎Star支持!