如何使用Python调用天眼查API查询企业信息:从入门到实践指南
2025.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 申请流程与注意事项
- 注册开发者账号:登录天眼查开放平台,完成实名认证。
- 创建应用:填写应用名称、用途描述,选择所需API权限。
- 获取API Key:系统生成唯一的AppKey和AppSecret,用于身份验证。
- 测试与上线:在沙箱环境测试接口,确认无误后切换至生产环境。
关键点:API调用有频率限制(如免费版每日500次),超限需升级套餐;数据使用需遵守平台规范,禁止非法转售。
二、Python调用天眼查API的完整流程
2.1 环境准备与依赖安装
# 安装requests库(若未安装)
pip install requests
2.2 基础查询实现:以企业基本信息为例
步骤1:构造请求参数
import requests
import hashlib
import time
# 配置参数
app_key = "你的AppKey"
app_secret = "你的AppSecret"
api_url = "https://api.tianyancha.com/services/v3/open/searchV2" # 示例URL,需替换为实际接口
# 请求参数
params = {
"keyword": "阿里巴巴", # 企业名称或关键词
"pageSize": 10,
"pageNum": 1
}
步骤2:生成签名(天眼查API通常要求签名验证)
def generate_sign(params, app_secret):
# 将参数按字典序排序并拼接
sorted_params = sorted(params.items(), key=lambda x: x[0])
param_str = app_secret
for k, v in sorted_params:
param_str += f"{k}{v}"
param_str += app_secret
# MD5加密
md5 = hashlib.md5(param_str.encode("utf-8")).hexdigest()
return md5
params["sign"] = generate_sign(params, app_secret)
步骤3:发送请求并解析响应
headers = {
"X-Tyc-App-Key": app_key,
"Content-Type": "application/json"
}
response = requests.get(api_url, params=params, headers=headers)
data = response.json()
if data["code"] == 200:
for company in data["data"]["items"]:
print(f"企业名称: {company['name']}")
print(f"统一社会信用代码: {company['creditCode']}")
print(f"法定代表人: {company['legalPersonName']}")
else:
print(f"请求失败: {data['message']}")
2.3 高级查询场景:司法风险信息获取
若需查询企业司法风险,需调用/services/v3/open/lawSuitList
接口,参数需包含companyId
(通过基础查询获取)。示例如下:
def get_lawsuit_info(company_id):
api_url = "https://api.tianyancha.com/services/v3/open/lawSuitList"
params = {
"companyId": company_id,
"pageSize": 5
}
params["sign"] = generate_sign(params, app_secret)
response = requests.get(api_url, params=params, headers=headers)
data = response.json()
if data["code"] == 200:
for lawsuit in data["data"]["items"]:
print(f"案件类型: {lawsuit['caseType']}")
print(f"审理法院: {lawsuit['court']}")
print(f"立案日期: {lawsuit['filingDate']}")
else:
print(f"请求失败: {data['message']}")
三、数据解析与存储优化
3.1 JSON数据结构分析
天眼查API返回的JSON数据通常包含多层嵌套,例如:
{
"code": 200,
"message": "success",
"data": {
"items": [
{
"name": "阿里巴巴集团",
"creditCode": "913301087517434382",
"legalPersonName": "张勇",
"regCapital": "100000万人民币"
}
]
}
}
需通过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”]
])
- **数据库存储**:大规模数据建议使用MySQL或MongoDB。以MySQL为例:
```python
import pymysql
conn = pymysql.connect(host="localhost", user="root", password="123456", database="company_db")
cursor = conn.cursor()
# 创建表(若不存在)
cursor.execute("""
CREATE TABLE IF NOT EXISTS companies (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
credit_code VARCHAR(18),
legal_person VARCHAR(50),
reg_capital VARCHAR(50)
)
""")
for company in data["data"]["items"]:
cursor.execute(
"INSERT INTO companies (name, credit_code, legal_person, reg_capital) VALUES (%s, %s, %s, %s)",
(company["name"], company["creditCode"], company["legalPersonName"], company["regCapital"])
)
conn.commit()
conn.close()
四、常见问题与解决方案
4.1 签名错误排查
若返回{"code": 401, "message": "签名错误"}
,检查:
- 参数排序:确保按字典序排列。
- 时间戳:部分接口需添加
timestamp
参数并参与签名。 - 密钥泄露:立即重置AppSecret。
4.2 频率限制应对
免费版API每日500次调用限制可通过以下方式优化:
- 缓存机制:对已查询企业本地存储,避免重复调用。
- 异步队列:使用
celery
等工具分散请求时间。 - 升级套餐:根据需求选择付费版(如专业版每日5000次)。
4.3 数据完整性验证
部分字段可能为空(如regCapital
为null
),需在代码中添加判空逻辑:
reg_capital = company.get("regCapital", "未披露")
五、扩展应用场景
5.1 企业关联关系分析
通过调用/services/v3/open/investment
接口,可构建企业股权穿透图,辅助风险评估。
5.2 动态监控与告警
结合Python的schedule
库,定期查询目标企业信息,若发现经营异常或司法风险,通过邮件或短信告警。
5.3 数据可视化
使用pandas
和matplotlib
分析行业数据,例如统计某地区企业注册资本分布:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("companies.csv")
df["reg_capital_num"] = df["reg_capital"].str.replace("万人民币", "").astype(float)
plt.hist(df["reg_capital_num"], bins=20)
plt.xlabel("注册资本(万)")
plt.ylabel("企业数量")
plt.title("某地区企业注册资本分布")
plt.show()
六、总结与建议
通过Python调用天眼查API,可实现企业信息的高效采集与分析。关键步骤包括:
- 合规申请API权限,避免滥用导致封禁。
- 正确处理签名与参数,确保请求有效性。
- 优化数据存储与处理,提升后续分析效率。
实践建议:
- 初期使用免费版测试接口稳定性。
- 对高频需求场景,优先考虑缓存与异步处理。
- 结合业务需求选择深度信息API(如司法风险、知识产权)。
掌握这一技术栈,不仅可提升个人开发能力,更能为企业决策提供数据支撑,在商业竞争中占据先机。
发表评论
登录后可评论,请前往 登录 或 注册