Skip to content

Repository files navigation

API 5L SMLS 认证厂家数据采集工具

Python Version License Code Style

自动采集全球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

📖 使用指南

1. 探测API数据结构(首次使用推荐)

在首次使用前,建议先运行探测脚本了解API数据结构:

python api_structure_explorer.py

输出内容:

  • 📄 api_sample_response.json - 5条样本数据
  • 📊 所有可用字段列表(40+)
  • 🔍 SMLS产品特征分析
  • 💡 配置建议

何时需要运行探测脚本:

  • 首次使用本工具
  • API数据结构可能发生变化
  • SMLS产品识别不准确时
  • 需要了解新增字段

2. 执行数据采集

python api5l_smls_collector_enhanced.py

采集流程:

🚀 开始数据采集
  ↓
📄 获取第1页 → 解析总页数
  ↓
📄 循环获取所有页面
  ↓
✅ SMLS产品识别
  ↓
🚫 排除中国厂家
  ↓
💾 保存到CSV文件
  ↓
📊 生成统计报告

3. 输出示例

控制台输出:

================================================================================
🌍 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

⚙️ 配置调整

SMLS产品识别配置

根据探测脚本结果,在 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输出字段

如需添加或删除CSV字段,修改第69-92行的 self.csv_fields 列表。

网络参数

# 超时时间(第189行)
timeout=30  # 秒

# 重试次数(第181行)
max_retries: int = 3

# 页面延迟(第273行)
time.sleep(0.5)  # 秒

🔧 故障排查

问题1: 网络连接失败

现象:

⚠️  请求失败(第1次尝试): Connection timeout
⏳ 2秒后重试...

解决方案:

  • 检查网络连接
  • 确认能访问 https://mycerts.api.org
  • 增加超时时间(第189行)
  • 检查是否需要代理

问题2: SMLS识别不准确

现象:

  • 输出数据过多/过少
  • 包含非SMLS产品

解决方案:

  1. 运行探测脚本分析实际数据结构
  2. 根据建议调整 smls_product_ids 和 smls_spec_ids
  3. 检查关键词列表是否完整
  4. 查看样本数据中的 products 和 registrationScope 字段

问题3: CSV文件乱码

现象:

  • Excel打开CSV显示乱码

解决方案:

  • 本工具已使用 utf-8-sig 编码(带BOM)
  • Excel 2016+应自动识别
  • 或在Excel中:数据 → 从文本/CSV → 文件原点选择"65001: Unicode (UTF-8)"

问题4: 中国厂家未完全排除

现象:

  • 输出结果中仍有中国厂家

解决方案:

  • 检查该厂家的 country 和 countryCode 字段实际值
  • 将新变体添加到 china_variants 集合中
  • 重新运行采集

问题5: 数据字段缺失

现象:

  • CSV中某些字段为空

解决方案:

  • 这是正常的,API数据本身可能不完整
  • 运行探测脚本查看样本数据
  • 某些字段仅部分厂家提供

📚 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
  • 保持单一职责原则

📝 更新日志

v1.0.0 (2024-01-15)

  • ✨ 初始发布
  • ✅ 自动分页采集功能
  • ✅ 多重SMLS产品识别
  • ✅ 中国厂家智能排除
  • ✅ 网络容错与重试机制
  • ✅ 详细统计报告
  • ✅ CSV标准输出

📄 许可证

本项目采用 MIT License 开源协议。

🙏 致谢

  • 数据来源:API myCerts
  • 美国石油协会(American Petroleum Institute)

📧 联系方式


⭐ 如果这个项目对您有帮助,欢迎Star支持!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages