2021-12-01 10:31:39 +08:00
|
|
|
"""
|
|
|
|
天眼查API
|
|
|
|
"""
|
|
|
|
import json
|
|
|
|
import requests
|
|
|
|
|
2021-12-08 14:12:09 +08:00
|
|
|
from common import judege_api_code, general_request
|
2021-12-17 16:47:38 +08:00
|
|
|
from db import conserve_data, find_db_data, conserve_data_by_hold
|
2021-12-08 14:12:09 +08:00
|
|
|
from setting import DB_SFFX, DB_JYFX, DB_TYFX, DB_GSBJ, DB_JYZK, DB_ZSCQ, DB_GSFZ
|
2021-12-01 10:31:39 +08:00
|
|
|
|
2021-12-08 14:12:09 +08:00
|
|
|
token = "32737167-cb63-4ce9-9397-d66169488f51"
|
2021-12-01 10:31:39 +08:00
|
|
|
headers = {'Authorization': token}
|
|
|
|
|
|
|
|
|
|
|
|
# 司法风险
|
|
|
|
def judicial_risk(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/cb/judicial/2.0?keyword={}'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
# 请求url
|
|
|
|
res = json.loads(requests.get(url, headers=headers).text)
|
|
|
|
# 判断 error_code状态码
|
|
|
|
code = res['error_code']
|
|
|
|
status = judege_api_code(code)
|
|
|
|
# 返回请求成功则保存result数据
|
|
|
|
if status == '请求成功':
|
2021-12-01 17:05:47 +08:00
|
|
|
result = res['result']
|
2021-12-08 14:12:09 +08:00
|
|
|
insert = dict()
|
|
|
|
insert['开庭公告'] = result['ktAnnouncementList']
|
|
|
|
insert['被执行人'] = result['zhixingList']
|
|
|
|
insert['法院公告'] = result['courtAnnouncementList']
|
|
|
|
insert['立案信息'] = result['courtRegisterList']
|
|
|
|
insert['失信人'] = result['dishonestList']
|
|
|
|
insert['诉讼'] = result['lawSuitList']
|
|
|
|
insert['送达公告'] = result['sendAnnouncementList']
|
|
|
|
for key, value in insert.items():
|
|
|
|
conserve_data(DB_SFFX, name, key, value)
|
|
|
|
return '保存成功'
|
|
|
|
elif status == '无数据':
|
|
|
|
insert = dict()
|
|
|
|
insert['开庭公告'] = dict()
|
|
|
|
insert['被执行人'] = dict()
|
|
|
|
insert['法院公告'] = dict()
|
|
|
|
insert['立案信息'] = dict()
|
|
|
|
insert['失信人'] = dict()
|
|
|
|
insert['诉讼'] = dict()
|
|
|
|
insert['送达公告'] = dict()
|
|
|
|
for key, value in insert.items():
|
2021-12-01 14:09:33 +08:00
|
|
|
conserve_data(DB_SFFX, name, key, value)
|
2021-12-01 17:05:47 +08:00
|
|
|
return '保存成功'
|
2021-12-08 14:12:09 +08:00
|
|
|
else:
|
|
|
|
return status
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-严重违法
|
|
|
|
def serious_violation(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/illegalinfo/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '严重违法')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-行政处罚
|
|
|
|
def administrative_sanction(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/punishmentInfo/3.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '行政处罚')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-环保处罚
|
|
|
|
def environmental_punishment(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/environmentalPenalty/2.0?name={}&pageSize=20&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '环保处罚')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-经营异常
|
|
|
|
def abnormal_operation(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/abnormal/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '经营异常')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-欠税公告
|
|
|
|
def tax_arrears_announcement(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/ownTax/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '欠税公告')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-税收违法
|
|
|
|
def tax_violation(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/taxContravention/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '税收违法')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 经营风险-股权出质
|
|
|
|
def equity_pledge(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/mr/equityInfo/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
res = general_request(url, name, DB_JYFX, '股权出质')
|
|
|
|
return res
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 企业天眼风险-周边风险
|
|
|
|
def peripheral_risk(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/risk/riskInfo/2.0?keyword={}'
|
|
|
|
url = url.format(name)
|
|
|
|
|
2021-12-08 14:12:09 +08:00
|
|
|
# 请求url
|
|
|
|
res = json.loads(requests.get(url, headers=headers).text)
|
|
|
|
# 判断 error_code状态码
|
|
|
|
code = res['error_code']
|
|
|
|
status = judege_api_code(code)
|
|
|
|
# 返回请求成功则保存result数据
|
|
|
|
if status == '请求成功':
|
|
|
|
result = res['result']
|
|
|
|
insert = dict()
|
|
|
|
insert['自身风险'] = result['riskList'][0]
|
|
|
|
insert['周边风险'] = result['riskList'][1]
|
|
|
|
insert['历史风险'] = result['riskList'][2]
|
|
|
|
insert['预警提醒'] = result['riskList'][3]
|
|
|
|
for key, value in insert.items():
|
2021-12-01 14:09:33 +08:00
|
|
|
conserve_data(DB_TYFX, name, key, value)
|
2021-12-08 14:12:09 +08:00
|
|
|
return '保存成功'
|
|
|
|
elif status == '无数据':
|
|
|
|
insert = dict()
|
|
|
|
insert['自身风险'] = dict()
|
|
|
|
insert['周边风险'] = dict()
|
|
|
|
insert['历史风险'] = dict()
|
|
|
|
insert['预警提醒'] = dict()
|
|
|
|
for key, value in insert.items():
|
2021-12-01 14:09:33 +08:00
|
|
|
conserve_data(DB_TYFX, name, key, value)
|
2021-12-08 14:12:09 +08:00
|
|
|
return '保存成功'
|
|
|
|
else:
|
|
|
|
return status
|
2021-12-01 10:31:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 公司背景-企业基本信息
|
|
|
|
def company_baseinfo(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/ic/baseinfo/normal?keyword={}'
|
|
|
|
url = url.format(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
# 请求url
|
|
|
|
res = json.loads(requests.get(url, headers=headers).text)
|
|
|
|
# 判断 error_code状态码
|
|
|
|
code = res['error_code']
|
|
|
|
status = judege_api_code(code)
|
|
|
|
# 返回请求成功则保存result数据
|
|
|
|
if status == '请求成功':
|
|
|
|
insert = res['result']
|
|
|
|
conserve_data(DB_GSBJ, name, '基本信息', insert)
|
|
|
|
return '保存成功'
|
|
|
|
elif status == '无数据':
|
|
|
|
insert = dict()
|
|
|
|
conserve_data(DB_GSBJ, name, '基本信息', insert)
|
|
|
|
return '保存成功'
|
|
|
|
else:
|
|
|
|
return status
|
|
|
|
|
|
|
|
|
|
|
|
# 公司背景-企业股东
|
|
|
|
def corporate_shareholders(name):
|
2022-03-14 16:05:18 +08:00
|
|
|
def method_01():
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/ic/holder/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_GSBJ, '企业股东')
|
|
|
|
return res
|
|
|
|
|
|
|
|
def method_02():
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/stock/shareholder/2.0?&keyword={}&type=1'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_GSBJ, '十大股东')
|
|
|
|
return res
|
|
|
|
|
|
|
|
records = find_db_data(db='公司背景', col='基本信息', query={"企业名称": name})[0]
|
|
|
|
if '上市' in records['基本信息']['companyOrgType']:
|
|
|
|
info = method_02()
|
|
|
|
return info
|
|
|
|
else:
|
|
|
|
info = method_01()
|
|
|
|
return info
|
2021-12-01 10:31:39 +08:00
|
|
|
|
2021-12-08 14:12:09 +08:00
|
|
|
|
|
|
|
# 公司背景-对外投资
|
|
|
|
def outbound_investment(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/ic/inverst/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_GSBJ, '对外投资')
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
2021-12-09 14:56:23 +08:00
|
|
|
# 公司背景-主要人员
|
|
|
|
def principal_officer(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/ic/staff/2.0?keyword={}&pageNum=1&pageSize=20'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_GSBJ, '主要人员')
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
2021-12-09 15:27:12 +08:00
|
|
|
# 公司背景-变更记录
|
|
|
|
def change_record(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/ic/changeinfo/2.0?keyword={}&pageNum=1&pageSize=20'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_GSBJ, '变更记录')
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
2021-12-08 14:12:09 +08:00
|
|
|
# 经营状况-进出口信用
|
|
|
|
def import_export_credit(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/m/importAndExport/2.0?keyword={}'
|
|
|
|
url = url.format(name)
|
|
|
|
# 请求url
|
|
|
|
res = json.loads(requests.get(url, headers=headers).text)
|
|
|
|
# 判断 error_code状态码
|
|
|
|
code = res['error_code']
|
|
|
|
status = judege_api_code(code)
|
|
|
|
# 返回请求成功则保存result数据
|
|
|
|
if status == '请求成功':
|
|
|
|
insert = res['result']
|
|
|
|
conserve_data(DB_JYZK, name, '进出口信用', insert)
|
|
|
|
return '保存成功'
|
|
|
|
elif status == '无数据':
|
|
|
|
insert = dict()
|
|
|
|
conserve_data(DB_JYZK, name, '进出口信用', insert)
|
|
|
|
return '保存成功'
|
|
|
|
else:
|
|
|
|
return status
|
|
|
|
|
|
|
|
|
|
|
|
# 经营状况-资质证书
|
|
|
|
def qualification_certificate(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/m/certificate/2.0?name={}&pageSize=20&pageNum=1'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_JYZK, '资质证书')
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
|
|
# 知识产权
|
|
|
|
def intellectual_property(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/cb/ipr/2.0?keyword={}'
|
|
|
|
url = url.format(name)
|
|
|
|
# 请求url
|
|
|
|
res = json.loads(requests.get(url, headers=headers).text)
|
|
|
|
# 判断 error_code状态码
|
|
|
|
code = res['error_code']
|
|
|
|
status = judege_api_code(code)
|
|
|
|
# 返回请求成功则保存result数据
|
|
|
|
if status == '请求成功':
|
|
|
|
result = res['result']
|
|
|
|
insert = dict()
|
|
|
|
insert['商标'] = result['tmList']
|
|
|
|
insert['软件著作权'] = result['copyRegList']
|
|
|
|
insert['作品著作权'] = result['copyRegWorksList']
|
|
|
|
insert['网站备案'] = result['icpList']
|
|
|
|
insert['专利'] = result['patentList']
|
|
|
|
for key, value in insert.items():
|
|
|
|
conserve_data(DB_ZSCQ, name, key, value)
|
|
|
|
return '保存成功'
|
|
|
|
elif status == '无数据':
|
|
|
|
insert = dict()
|
|
|
|
insert['商标'] = dict()
|
|
|
|
insert['软件著作权'] = dict()
|
|
|
|
insert['作品著作权'] = dict()
|
|
|
|
insert['网站备案'] = dict()
|
|
|
|
insert['专利'] = dict()
|
|
|
|
for key, value in insert.items():
|
|
|
|
conserve_data(DB_ZSCQ, name, key, value)
|
|
|
|
return '保存成功'
|
|
|
|
else:
|
|
|
|
return status
|
|
|
|
|
|
|
|
|
|
|
|
# 公司发展-融资历史
|
|
|
|
def financing_history(name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/cd/findHistoryRongzi/2.0?pageSize=20&keyword={}&pageNum=1'
|
|
|
|
url = url.format(name)
|
|
|
|
res = general_request(url, name, DB_GSFZ, '融资历史')
|
|
|
|
return res
|
2021-12-01 14:09:33 +08:00
|
|
|
|
|
|
|
|
2021-12-17 16:47:38 +08:00
|
|
|
# 人员控股企业
|
|
|
|
def holding_enterprise(h_id, h_name):
|
|
|
|
url = 'http://open.api.tianyancha.com/services/open/human/companyholding/2.0?hid={}&pageSize=20&pageNum=1&'
|
|
|
|
url = url.format(h_id)
|
|
|
|
# 根据传入url进行请求
|
|
|
|
res = json.loads(requests.get(url, headers=headers).text)
|
|
|
|
# 判断请求返回结果中的error_code
|
|
|
|
code = res['error_code']
|
|
|
|
status = judege_api_code(code)
|
|
|
|
# status为请求成功则保存result数据
|
|
|
|
if status == '请求成功':
|
|
|
|
insert = dict()
|
|
|
|
insert['result'] = res['result']['items']
|
|
|
|
insert['total'] = res['result']['total']
|
|
|
|
conserve_data_by_hold(DB_GSBJ, h_id, h_name, '人员控股企业', insert)
|
|
|
|
return '保存成功'
|
|
|
|
elif status == '无数据':
|
|
|
|
insert = dict()
|
|
|
|
conserve_data_by_hold(DB_GSBJ, h_id, h_name, '人员控股企业', insert)
|
|
|
|
return '保存成功'
|
|
|
|
else:
|
|
|
|
return status
|
|
|
|
|
|
|
|
|
|
|
|
# 保存股东数据
|
|
|
|
def shareholder_information(name):
|
2022-03-15 10:56:16 +08:00
|
|
|
basic_info = find_db_data(db='公司背景', col='基本信息', query={'企业名称': name})[0]
|
|
|
|
if '上市' in basic_info['基本信息']['companyOrgType']:
|
|
|
|
# 判断企业大股东类型
|
|
|
|
result = find_db_data(db='公司背景', col='十大股东', query={'企业名称': name})
|
|
|
|
if len(result) > 0:
|
|
|
|
if result[0]['十大股东']['holderList'][0]['cType'] == 1:
|
|
|
|
# 1-公司
|
|
|
|
company_name = result[0]['十大股东']['holderList'][0]['name']
|
|
|
|
# 股东为公司,需要再次调用基本信息/企业股东天眼查接口
|
|
|
|
res = company_baseinfo(company_name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = corporate_shareholders(company_name)
|
|
|
|
else:
|
|
|
|
# 2-自然人
|
|
|
|
h_id = result[0]['十大股东']['holderList'][0]['id']
|
|
|
|
h_name = result[0]['十大股东']['holderList'][0]['name']
|
|
|
|
res = holding_enterprise(h_id, h_name)
|
|
|
|
return res
|
|
|
|
else:
|
|
|
|
# 判断企业大股东类型
|
|
|
|
result = find_db_data(db='公司背景', col='企业股东', query={'企业名称': name})
|
|
|
|
if len(result) > 0:
|
|
|
|
if result[0]['企业股东']['result'][0]['type'] == 1:
|
|
|
|
# 1-公司
|
|
|
|
company_name = result[0]['企业股东']['result'][0]['name']
|
|
|
|
# 股东为公司,需要再次调用基本信息/企业股东天眼查接口
|
|
|
|
res = company_baseinfo(company_name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = corporate_shareholders(company_name)
|
|
|
|
else:
|
|
|
|
# 2-自然人
|
|
|
|
h_id = result[0]['企业股东']['result'][0]['id']
|
|
|
|
h_name = result[0]['企业股东']['result'][0]['name']
|
|
|
|
res = holding_enterprise(h_id, h_name)
|
|
|
|
return res
|
2021-12-17 16:47:38 +08:00
|
|
|
|
|
|
|
|
2021-12-08 14:12:09 +08:00
|
|
|
# 保存全量数据
|
2021-12-01 14:09:33 +08:00
|
|
|
def save_full_data(name):
|
|
|
|
"""
|
|
|
|
调用天眼查api
|
|
|
|
保存天眼查全量数据
|
|
|
|
"""
|
2021-12-08 14:12:09 +08:00
|
|
|
res = judicial_risk(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = serious_violation(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = administrative_sanction(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = environmental_punishment(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = abnormal_operation(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = tax_arrears_announcement(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = tax_violation(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = equity_pledge(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = peripheral_risk(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = company_baseinfo(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = corporate_shareholders(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = outbound_investment(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = import_export_credit(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = qualification_certificate(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = intellectual_property(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = financing_history(name)
|
2021-12-09 15:27:12 +08:00
|
|
|
if res == '保存成功':
|
|
|
|
res = principal_officer(name)
|
|
|
|
if res == '保存成功':
|
|
|
|
res = change_record(name)
|
2021-12-17 16:47:38 +08:00
|
|
|
if res == '保存成功':
|
|
|
|
res = shareholder_information(name)
|
2021-12-08 14:12:09 +08:00
|
|
|
return res
|
2021-12-09 15:27:12 +08:00
|
|
|
|
2021-12-17 16:47:38 +08:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2022-03-15 10:56:16 +08:00
|
|
|
r = shareholder_information('大族激光科技产业集团股份有限公司')
|
2021-12-17 16:47:38 +08:00
|
|
|
print(r)
|