logo

如何使用Python调用天眼查API查询企业信息:从入门到实践指南

作者:demo2025.09.18 16:00浏览量:0

简介:本文详细介绍了如何通过Python调用天眼查API查询企业信息,包括API申请、代码实现、数据解析及高级应用场景,帮助开发者高效获取企业数据。

如何使用Python调用天眼查API查询企业信息:从入门到实践指南

在商业决策、市场调研或风险控制场景中,企业信息的快速获取与分析至关重要。天眼查作为国内领先的企业信息查询平台,通过其开放API接口,结合Python的自动化能力,可实现高效、精准的企业数据采集。本文将从API申请、代码实现到高级应用场景,系统讲解如何通过Python调用天眼查API查询企业信息。

一、天眼查API概述:为何选择其作为数据源?

天眼查API的核心优势在于其数据的全面性与实时性。平台覆盖全国超2亿家企业的工商信息、司法风险、经营状况等数据,且通过结构化接口返回JSON格式数据,便于程序处理。与网页爬取相比,API调用具有稳定性高、反爬风险低的特点,尤其适合需要高频次、大规模数据采集的场景。

1.1 API类型与权限

天眼查提供两类主要API:

  • 基础信息查询:包括企业名称、统一社会信用代码、法定代表人、注册资本等基础字段。
  • 深度信息查询:涵盖司法诉讼、经营异常、知识产权等高价值数据。

开发者需根据业务需求申请对应权限,例如,风险评估场景可能需要司法风险API,而供应链管理则需关注企业关联关系。

1.2 申请流程与注意事项

  1. 注册开发者账号:登录天眼查开放平台,完成实名认证。
  2. 创建应用:填写应用名称、用途描述,选择所需API权限。
  3. 获取API Key:系统生成唯一的AppKey和AppSecret,用于身份验证。
  4. 测试与上线:在沙箱环境测试接口,确认无误后切换至生产环境。

关键点:API调用有频率限制(如免费版每日500次),超限需升级套餐;数据使用需遵守平台规范,禁止非法转售。

二、Python调用天眼查API的完整流程

2.1 环境准备与依赖安装

  1. # 安装requests库(若未安装)
  2. pip install requests

2.2 基础查询实现:以企业基本信息为例

步骤1:构造请求参数

  1. import requests
  2. import hashlib
  3. import time
  4. # 配置参数
  5. app_key = "你的AppKey"
  6. app_secret = "你的AppSecret"
  7. api_url = "https://api.tianyancha.com/services/v3/open/searchV2" # 示例URL,需替换为实际接口
  8. # 请求参数
  9. params = {
  10. "keyword": "阿里巴巴", # 企业名称或关键词
  11. "pageSize": 10,
  12. "pageNum": 1
  13. }

步骤2:生成签名(天眼查API通常要求签名验证)

  1. def generate_sign(params, app_secret):
  2. # 将参数按字典序排序并拼接
  3. sorted_params = sorted(params.items(), key=lambda x: x[0])
  4. param_str = app_secret
  5. for k, v in sorted_params:
  6. param_str += f"{k}{v}"
  7. param_str += app_secret
  8. # MD5加密
  9. md5 = hashlib.md5(param_str.encode("utf-8")).hexdigest()
  10. return md5
  11. params["sign"] = generate_sign(params, app_secret)

步骤3:发送请求并解析响应

  1. headers = {
  2. "X-Tyc-App-Key": app_key,
  3. "Content-Type": "application/json"
  4. }
  5. response = requests.get(api_url, params=params, headers=headers)
  6. data = response.json()
  7. if data["code"] == 200:
  8. for company in data["data"]["items"]:
  9. print(f"企业名称: {company['name']}")
  10. print(f"统一社会信用代码: {company['creditCode']}")
  11. print(f"法定代表人: {company['legalPersonName']}")
  12. else:
  13. print(f"请求失败: {data['message']}")

2.3 高级查询场景:司法风险信息获取

若需查询企业司法风险,需调用/services/v3/open/lawSuitList接口,参数需包含companyId(通过基础查询获取)。示例如下:

  1. def get_lawsuit_info(company_id):
  2. api_url = "https://api.tianyancha.com/services/v3/open/lawSuitList"
  3. params = {
  4. "companyId": company_id,
  5. "pageSize": 5
  6. }
  7. params["sign"] = generate_sign(params, app_secret)
  8. response = requests.get(api_url, params=params, headers=headers)
  9. data = response.json()
  10. if data["code"] == 200:
  11. for lawsuit in data["data"]["items"]:
  12. print(f"案件类型: {lawsuit['caseType']}")
  13. print(f"审理法院: {lawsuit['court']}")
  14. print(f"立案日期: {lawsuit['filingDate']}")
  15. else:
  16. print(f"请求失败: {data['message']}")

三、数据解析与存储优化

3.1 JSON数据结构分析

天眼查API返回的JSON数据通常包含多层嵌套,例如:

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "data": {
  5. "items": [
  6. {
  7. "name": "阿里巴巴集团",
  8. "creditCode": "913301087517434382",
  9. "legalPersonName": "张勇",
  10. "regCapital": "100000万人民币"
  11. }
  12. ]
  13. }
  14. }

需通过data["data"]["items"]访问企业列表,再逐层提取字段。

3.2 数据存储方案

  • CSV存储:适合小规模数据,使用Python内置csv模块。
    ```python
    import csv

with open(“companies.csv”, “w”, newline=””, encoding=”utf-8”) as f:
writer = csv.writer(f)
writer.writerow([“名称”, “信用代码”, “法人”, “注册资本”])
for company in data[“data”][“items”]:
writer.writerow([
company[“name”],
company[“creditCode”],
company[“legalPersonName”],
company[“regCapital”]
])

  1. - **数据库存储**:大规模数据建议使用MySQLMongoDB。以MySQL为例:
  2. ```python
  3. import pymysql
  4. conn = pymysql.connect(host="localhost", user="root", password="123456", database="company_db")
  5. cursor = conn.cursor()
  6. # 创建表(若不存在)
  7. cursor.execute("""
  8. CREATE TABLE IF NOT EXISTS companies (
  9. id INT AUTO_INCREMENT PRIMARY KEY,
  10. name VARCHAR(100),
  11. credit_code VARCHAR(18),
  12. legal_person VARCHAR(50),
  13. reg_capital VARCHAR(50)
  14. )
  15. """)
  16. for company in data["data"]["items"]:
  17. cursor.execute(
  18. "INSERT INTO companies (name, credit_code, legal_person, reg_capital) VALUES (%s, %s, %s, %s)",
  19. (company["name"], company["creditCode"], company["legalPersonName"], company["regCapital"])
  20. )
  21. conn.commit()
  22. conn.close()

四、常见问题与解决方案

4.1 签名错误排查

若返回{"code": 401, "message": "签名错误"},检查:

  1. 参数排序:确保按字典序排列。
  2. 时间戳:部分接口需添加timestamp参数并参与签名。
  3. 密钥泄露:立即重置AppSecret。

4.2 频率限制应对

免费版API每日500次调用限制可通过以下方式优化:

  • 缓存机制:对已查询企业本地存储,避免重复调用。
  • 异步队列:使用celery等工具分散请求时间。
  • 升级套餐:根据需求选择付费版(如专业版每日5000次)。

4.3 数据完整性验证

部分字段可能为空(如regCapitalnull),需在代码中添加判空逻辑:

  1. reg_capital = company.get("regCapital", "未披露")

五、扩展应用场景

5.1 企业关联关系分析

通过调用/services/v3/open/investment接口,可构建企业股权穿透图,辅助风险评估。

5.2 动态监控与告警

结合Python的schedule库,定期查询目标企业信息,若发现经营异常或司法风险,通过邮件或短信告警。

5.3 数据可视化

使用pandasmatplotlib分析行业数据,例如统计某地区企业注册资本分布:

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df = pd.read_csv("companies.csv")
  4. df["reg_capital_num"] = df["reg_capital"].str.replace("万人民币", "").astype(float)
  5. plt.hist(df["reg_capital_num"], bins=20)
  6. plt.xlabel("注册资本(万)")
  7. plt.ylabel("企业数量")
  8. plt.title("某地区企业注册资本分布")
  9. plt.show()

六、总结与建议

通过Python调用天眼查API,可实现企业信息的高效采集与分析。关键步骤包括:

  1. 合规申请API权限,避免滥用导致封禁。
  2. 正确处理签名与参数,确保请求有效性。
  3. 优化数据存储与处理,提升后续分析效率。

实践建议

  • 初期使用免费版测试接口稳定性。
  • 对高频需求场景,优先考虑缓存与异步处理。
  • 结合业务需求选择深度信息API(如司法风险、知识产权)。

掌握这一技术栈,不仅可提升个人开发能力,更能为企业决策提供数据支撑,在商业竞争中占据先机。

相关文章推荐

发表评论