企查查api接口中心:http://openapi.qichacha.com/DataCenter
1、了解需求,申请接口。
想要通过企业的统一信用代码或者企业名称查询企业的注册地址,所以申请的企业工商数据里面的企业关键字精确获取详细信息(Basic)。如果有别的需要,另外申请就可以了。在我的接口里面有我的key和我的密钥,注意,这两个后面东西会用到。
2、了解请求参数设置以及返回数据的格式
多说无益,直接看图说话。
1)这里请求参数中key就是我的key
keyword就是查询的关键字(企业名称、注册号、社会统一信用代码)
权限验证这里有点复炸,当初博主在这里也是愣了好久,现在想来其实挺简单的。其实就是构造一个请求头,请求头里面有两个字段,一个是 Token,另一个是Timespan。
Timespan就是精确到秒的时间戳。
Token就是将我的key、精确到秒的时间戳、我的密钥三个东西拼接,然后使用md5加密算法进行加密,加完密之后再所有字符串全部转化为大写。
2)返回的数据一般分两种,有些接口只返回json格式的数据。我们直接解析提取相应格式获取数据就可以。
3、代码实现
# -*- coding:utf-8 -*-
import requests,time,json
from hashlib import md5
'''
企查查api接口中心:http://openapi.qichacha.com/DataCenter
'''
class qichahca_api():
def __init__(self):
self.key = 'b077ec2d'
self.screat_key = '5519427B7'
self.basic_info_url = "http://api.qichacha.com/ECIV4/GetBasicDetailsByName?key=%s&dtype=json&keyword={keyword}"%self.key
# 获取时间戳
def get_time_tup(self):
"""
:return: 13位精确到秒的时间戳
"""
time_tup = str(int(time.time()))
return time_tup
# md5加密
def set_md5(self,in_str):
"""
:param in_str: 拼接的字符串
:return: md5加密再转化为大写的字符串
"""
new_md5 = md5()
new_md5.update(in_str.encode(encoding='utf-8'))
s_md5 = new_md5.hexdigest().upper()
return s_md5
# 设置请求头
def get_headers(self,key,screat_key):
"""
:param key: 我的key
:param screat_key: 我的密钥
:return: 请求头
"""
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
# 'User-Agent': 'Mozilla/5.0 (Linux; Android 7.0; SM-G935P Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
# 'Host': 'www.qichacha.com',
}
token = key + self.get_time_tup() + screat_key
headers["Token"] = self.set_md5(token)
headers["Timespan"] = self.get_time_tup()
return headers
def get_data(self,company_list):
for company in company_list:
url=self.basic_info_url.format(keyword=company)
print('url:%s'%url)
response=requests.get(url=url,headers=self.get_headers(self.key,self.screat_key))
rows=json.loads(response.text)
print(rows)
if __name__ == '__main__':
company_list=[
"小米科技有限责任公司",
]
re_aqi = qichahca_api()
re_aqi.get_data(company_list)
参考:https://blog.csdn.net/lzm475041893/article/details/88982909