编写Python脚本调用企查查股东信息接口将数据导出为excel文件

此文章已同步更新至我的个人博客https://simonting.gitee.io


前言

调用企查查的API获取一万多家公司股东信息数据导出为excel文件。

1、设置IP白名单

编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第1张图片

在这里插入图片描述

IP获取建议使用百度搜索:

编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第2张图片
编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第3张图片

2、获取我的key及我的密钥

编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第4张图片
编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第5张图片

替换程序中的我的key及我的密钥

编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第6张图片

3、准备公司名称excel

在这里插入图片描述
companyName.xlsx样例:
编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第7张图片
将excel放在程序同一目录下,修改文件名为companyName.xlsx,也可以修改代码中的文件名为你的excel文件名,建议文件名为全英文。
编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第8张图片

4、运行程序

前提:

  • 1、安装python3.0以上:https://www.runoob.com/python3/python3-install.html

  • 2、安装代码使用到的函数库:

    • pip3 install requests
    • pip3 install xlrd
  • 3、复制代码保存为main.py

  • 4、运行代码,python main.py ,如果安装过pycharm之类的IDE工具可以使用工具。

在目录下生成的data.csv即最终生成的股东信息文件
在这里插入图片描述

5、代码

# -*- coding: UTF-8 -*-
# !/usr/bin/python

# pip3 install requests
# pip3 install xlrd

import hashlib
import json
import os
import csv
import time

import requests
import xlrd

# 我的key
appKey = ''
# 我的密钥
secKey = ''
encode = 'utf-8'
# Http请求头设置
timespan = str(int(time.time()))
token = appKey + timespan + secKey
hl = hashlib.md5()
hl.update(token.encode(encoding=encode))
token = hl.hexdigest().upper()
file_path = 'data.csv'


# 数据获取
def get_data(company_name):
    url = 'http://api.qichacha.com/ECIPartner/GetList?pageIndex=1&pageSize=20&key=' + appKey + '&searchKey=' \
          + company_name
    print('开始获取' + company_name + '的股东数据...')
    print("请求url为:" + url)
    headers = {'Token': token, 'Timespan': timespan}
    response = requests.get(url, headers=headers)
    if response is None:
        print(company_name + "的数据查询异常!")
        return get_default_data()
    result_json = json.dumps(str(response.content, encoding=encode))
    result_json = result_json.encode(encode).decode("unicode-escape")
    data = json.loads(result_json[1:-1])
    if data['Status'] != '200':
        print(company_name + '的数据获取失败!原因:' + data['Message'])
        return get_default_data()
    print(company_name + '数据获取成功!')
    print('源数据为:' + str(data))
    return data


def get_default_data():
    json_str = '{"Paging":{"TotalRecords":0},"Result":[{"StockName":"-","StockType":"-","StockPercent":"-","ShouldCapi":"-","ShoudDate":"-"}]}'
    return json.loads(json_str)


# 向csv文件内写数据
def write_data_2_csv(index, data, company_name):
    total = data['Paging']['TotalRecords']
    items = data['Result']
    print(company_name + "共获取到" + str(total) + '条股东信息数据')
    print('开始写入' + company_name + '的数据...')
    csv_file = open(file_path, 'a+', newline='')
    try:
        writer = csv.writer(csv_file)
        if index == 0:
            header = ('公司名称', '股东', '类型', '占比', '出资金额(万)', '出资时间')
            writer.writerow(header)
        for item in items:
            row = (company_name, item['StockName'],
                   item['StockType'], item['StockPercent'],
                   item['ShouldCapi'], item['ShoudDate'])
            writer.writerow(row)
        print('写入' + company_name + '的数据完毕。')
    finally:
        csv_file.close()


# 删除已存在的data.csv
def pre_exec():
    if os.path.exists(file_path):
        os.remove(file_path)


def main():
    print('程序执行开始...')
    pre_exec()
    company = xlrd.open_workbook('companyName.xlsx').sheet_by_index(0)
    for i in range(company.nrows):
        company_name = str(company.row_values(i)[0])
        data = get_data(company_name)
        write_data_2_csv(i, data, company_name)
    print('程序执行结束。')


if __name__ == '__main__':
    main()

6、导出结果

编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第9张图片

编写Python脚本调用企查查股东信息接口将数据导出为excel文件_第10张图片

你可能感兴趣的