爬虫:AMAC私募基金管理人

2018/03/11

Categories: 爬虫 Tags: 基金

基金业协会备案信息之:基金管理人

模块引入

import requests
import pandas as pd
import random
import math
import time
import datetime
from sqlalchemy import create_engine
from lxml import etree
import re

requests.__version__
# '2.18.4'

基金管理人列表

chrome打开network查看请求,具体请求API为 POST,接口:http://gs.amac.org.cn/amac-infodisc/api/pof/manager,参数:?rand=0.24323480064904235&page=1&size=20

network请求 具体参数

参数说明:

# url = 'http://gs.amac.org.cn/amac-infodisc/api/pof/manager?rand=0.24121315630506435&page=0&size=20'
url = 'http://gs.amac.org.cn/amac-infodisc/api/pof/manager'

paras = {"rand": 0.24121315630506435,
         "page": 4,
         "size": 2}

headers = {
    'Content-Type': 'application/json'
}
  
rs = requests.post(url=url, headers=headers, params = paras, json={})
print(rs.url)
print(rs.text)

http://gs.amac.org.cn/amac-infodisc/api/pof/manager?rand=0.24121315630506435&page=4&size=2
{"content":[{"id":"101000000446","managerName":"鼎晖股权投资管理(天津)有限公司","artificialPersonName":"吴尚志","registerNo":"P1000301","establishDate":1211414400000,"managerHasProduct":null,"url":"101000000446.html","registerDate":1395014400000,"registerAddress":"天津市滨海新区滨海新区经济技术开发区南港工业区综合服务区办公楼D座二层202室(开发区金融服务中心托管第77号)","registerProvince":"天津市","registerCity":"滨海新区","regAdrAgg":"天津市","fundCount":12,"fundScale":1381634.712859,"paidInCapital":2049953.1490,"subscribedCapital":2642307.0000,"hasSpecialTips":false,"inBlacklist":false,"hasCreditTips":false,"regCoordinate":null,"officeCoordinate":"39.92271378228864,116.46714895633674","officeAddress":"北京市朝阳区朝阳区东三环中路5号财富金融中心25层","officeProvince":"北京市","officeCity":"朝阳区","primaryInvestType":"私募股权、创业投资基金管理人"},{"id":"101000000308","managerName":"广东中科招商创业投资管理有限责任公司","artificialPersonName":"杜昌焘","registerNo":"P1000302","establishDate":1247616000000,"managerHasProduct":null,"url":"101000000308.html","registerDate":1395014400000,"registerAddress":"广东省广州市萝岗区广州高新技术产业开发区科学大道235号1001房之八","registerProvince":"广东省","registerCity":"广州市","regAdrAgg":"广东省","fundCount":27,"fundScale":1111650.707103,"paidInCapital":972690.4115,"subscribedCapital":979315.4115,"hasSpecialTips":false,"inBlacklist":false,"hasCreditTips":false,"regCoordinate":"23.17761537939722,113.463880297835","officeCoordinate":"23.123979636327483,113.32975831850844","officeAddress":"广东省广州市天河区天河区珠江新城珠江西路5号广州国际金融中心西塔21层","officeProvince":"广东省","officeCity":"广州市","primaryInvestType":"私募股权、创业投资基金管理人"}],"last":false,"totalPages":11631,"totalElements":23262,"sort":[{"direction":"ASC","property":"registerDate","ignoreCase":false,"nullHandling":"NATIVE","ascending":true,"descending":false}],"size":2,"number":4,"first":false,"numberOfElements":2}

结果转化为pandas.DataFrame类型

dict_dat = rs.json()
df_pd = pd.DataFrame.from_dict(dict_dat['content'])
df_pd
``` ``` ``` ```
artificialPersonName establishDate fundCount fundScale hasCreditTips hasSpecialTips id inBlacklist managerHasProduct managerName ... primaryInvestType regAdrAgg regCoordinate registerAddress registerCity registerDate registerNo registerProvince subscribedCapital url
0 吴尚志 1211414400000 12 1.381635e+06 False False 101000000446 False None 鼎晖股权投资管理(天津)有限公司 ... 私募股权、创业投资基金管理人 天津市 None 天津市滨海新区滨海新区经济技术开发区南港工业区综合服务区办公楼D座二层202室(开发区金融服... 滨海新区 1395014400000 P1000301 天津市 2.642307e+06 101000000446.html
1 杜昌焘 1247616000000 27 1.111651e+06 False False 101000000308 False None 广东中科招商创业投资管理有限责任公司 ... 私募股权、创业投资基金管理人 广东省 23.17761537939722,113.463880297835 广东省广州市萝岗区广州高新技术产业开发区科学大道235号1001房之八 广州市 1395014400000 P1000302 广东省 9.793154e+05 101000000308.html

2 rows × 25 columns

加入日期范围筛选

date_range = {"establishDate": {"from": "2017-11-02", "to": "2018-02-02"}}
paras = {"rand": random.random(),
         "page": 0,
         "size": 4}
rs = requests.post(url=url, headers=headers, params = paras,
                   json=date_range)
print(rs.url)
dict_dat = rs.json()
df_pd = pd.DataFrame.from_dict(dict_dat['content'])
df_pd
http://gs.amac.org.cn/amac-infodisc/api/pof/manager?rand=0.9056699244551177&page=0&size=4
``` ``` ``` ```
artificialPersonName establishDate fundCount fundScale hasCreditTips hasSpecialTips id inBlacklist managerHasProduct managerName ... primaryInvestType regAdrAgg regCoordinate registerAddress registerCity registerDate registerNo registerProvince subscribedCapital url
0 张志良 1510704000000 0 0 False False 1711221511103201 False False 北京屹唐联合投资管理有限公司 ... 私募股权、创业投资基金管理人 北京市 39.79008460858685,116.5313401936383 北京市大兴区大兴区北京市北京经济技术开发区荣昌东街甲5号3号楼7层701-3室 大兴区 1514505600000 P1066606 北京市 0.0 1711221511103201.html
1 黎代福 1510185600000 0 0 False False 1711201409106565 False False 深圳市建信远致投贷联动股权投资基金管理有限公司 ... 私募股权、创业投资基金管理人 深圳市 22.54423473206776,114.06008610208522 广东省深圳市福田区福田街道深南大道4009投资大厦14A 深圳市 1515456000000 P1066724 广东省 0.0 1711201409106565.html
2 贾翔宇 1509926400000 0 0 False False 1711151340101418 False False 芜湖元祐投资管理有限公司 ... 私募股权、创业投资基金管理人 安徽省 31.351965582559195,118.38724548573022 安徽省芜湖市镜湖区荆峰路60-1号 芜湖市 1516320000000 P1066906 安徽省 0.0 1711151340101418.html
3 杜炎斌 1510790400000 0 0 False False 1711232310107506 False False 西藏聚信发展股权投资基金管理有限公司 ... 私募股权、创业投资基金管理人 西藏自治区 29.629444241792186,91.07674760971572 西藏自治区拉萨市城关区柳梧新区柳梧大厦1602号 拉萨市 1516320000000 P1066927 西藏自治区 0.0 1711232310107506.html

4 rows × 25 columns

基金管理人基本信息

class ManagerDetail(object):
    def __init__(self):
        dfname_dict = {"基金管理人全称(中文):": "manager_namecn",
                       "基金管理人全称(英文):": "manager_nameen",
                       "组织机构代码:": "manager_gov_code",
                       "注册资本(万元)(人民币):": "reg_capital",
                       "企业性质:": "company_nature",
                       "员工人数:": "employee_num",
                       "是否为会员:": "is_vip",
                       "当前会员类型:": "vip_type",
                       "法律意见书状态:": "legal_status",
                       "律师事务所名称:": "legal_name",
                       "律师姓名:": "lawyer_name",
                       "法定代表人/执行事务合伙人(委派代表)姓名:": "legal_representname",
                       "实缴资本(万元)(人民币):": "reg_capital_real",
                       "注册资本实缴比例:": "reg_capital_pct",
                       "机构网址:": "gov_website",
                       "入会时间:": "admission_date",
                       "机构信息最后更新时间:": "gov_last_update",
                       "特别提示信息:": "special_info",
                       "是否有从业资格:": "is_qualify",
                       "资格取得方式:": "qualify_way",
                       "业务类型:": "business_type"}

        dfname_base = pd.DataFrame()
        dfname_base['index_cn'] = list(dfname_dict.keys())
        dfname_base['index_en'] = list(dfname_dict.values())

        self.url_format = 'http://gs.amac.org.cn/amac-infodisc/res/pof/manager/%s.html'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
            'Connection': 'keep-alive',
            'Content-Type': 'application/json'
        }
        self.dfname_base = dfname_base
        self.xpath_pro = '//td[@class="td-content"]/p/a'

    def get_managerInfo(self, id):
        url = self.url_format % id
        rs = requests.get(url, headers=self.headers)
        # rs.text
        rs.encoding = 'UTF-8'

        tabs = pd.read_html(rs.text)

        # 机构基本信息
        tab1 = tabs[0].iloc[2:23, 0:2]
        tab2 = tabs[0].iloc[2:23, 2:4]
        tab3 = tabs[0]
        tab3 = tab3.loc[tab3.iloc[:, 0].isin(['机构信息最后更新时间:', '特别提示信息:'])]
        tab3 = tab3.iloc[:, 0:2]
        tab3

        tab1.columns = ['index_cn', 'val']
        tab2.columns = ['index_cn', 'val']
        tab3.columns = ['index_cn', 'val']
        tab_base = tab1.append(tab2)
        tab_base = pd.concat([tab1, tab2, tab3], axis=0, ignore_index=True)
        tab_base = tab_base.dropna()

        tab_base = pd.merge(self.dfname_base, tab_base, how='left')
        tab_base.index = tab_base['index_en']
        tab_base = tab_base[['val']]
        # tab_base.dropna()
        # tab_base

        tab_base['val'] = ['' if isinstance(x, float) and math.isnan(x) else x for x in tab_base['val']]
        tab_base = tab_base.T
        tab_base['manager_namecn'][0] = tab_base['manager_namecn'][0].split(' ')[1]
        tab_base['m_id'] = id


        ## 法定代表人简历
        cols_resume = set(['时间', '任职单位', '职务'])
        cols_admin = set(['高管姓名', '职务', '是否具有基金从业资格'])
        for ti in range(1, len(tabs)):
            cols = list(tabs[ti].columns)
            if (set(cols) == cols_resume):
                tab_resume = tabs[ti]
                tab_resume.columns = ['period_date', 'service_company', 'position']
                tab_resume['m_id'] = id
            ## 高管信息
            if (set(cols) == cols_admin):
                tab_admin = tabs[ti]
                tab_admin.columns = ['admin_name', 'position', 'is_passfund']
                tab_admin['m_id'] = id
                break

        ## 发行产品list
        try:
            r1_html = etree.HTML(rs.text)
            prodts = r1_html.xpath(self.xpath_pro)

            prodt_nm = [re.sub(':|\s', '', x.xpath('string()')) for x in prodts]
            prodt_id = [re.findall(r"\d+", x.xpath('@href')[0])[0] for x in prodts]
            tab_prodt = pd.DataFrame.from_records([prodt_id, prodt_nm]).T
            tab_prodt.columns = ['prodt_id', 'prodt_nm']
            tab_prodt['m_id'] = id
        except:
            tab_prodt = None

        res = {
            'tab_base': tab_base,
            'tab_resume': tab_resume,
            'tab_admin': tab_admin,
            'tab_prodt': tab_prodt
        }
        return res

managerdel = ManagerDetail()
managerdel.get_managerInfo(101000000138)
{'tab_admin':   admin_name        position is_passfund          m_id
 0        杨晓华  法定代表人 总经理 执行董事     是(资格认定)  101000000138
 1         周娟    合规风控 信息填报负责人     是(通过考试)  101000000138
 2        张存相            副总经理     是(通过考试)  101000000138
 3        瞿立杰            副总经理     是(通过考试)  101000000138,
 'tab_base': index_en    manager_namecn                                     manager_nameen  \
 val       平安道远投资管理(上海)有限公司  Ping An DaoYuan Investment Management (Shangha...   
 
 index_en manager_gov_code reg_capital company_nature employee_num is_vip  \
 val            57075680-3       20000           内资企业           34      是   
 
 index_en vip_type legal_status legal_name      ...      reg_capital_real  \
 val          观察会员                              ...                 20000   
 
 index_en reg_capital_pct gov_website admission_date gov_last_update  \
 val                 100%                 2013-05-08      2017-12-18   
 
 index_en special_info is_qualify qualify_way business_type          m_id  
 val                            是        资格认定                101000000138  
 
 [1 rows x 22 columns],
 'tab_prodt':             prodt_id                      prodt_nm          m_id
 0       351000131340               平安资产MOM1号资产管理产品  101000000138
 1       351000128351                 罗素投资合格投资者中国基金  101000000138
 2       351000128367                    平安人寿绝对收益账户  101000000138
 3       351000128350     交银国信平安罗素MOM一期多元投资集合资金信托计划  101000000138
 4       351000144727             平安资产MOM2号保险资产管理产品  101000000138
 5       351000144730             平安资产MOM3号保险资产管理产品  101000000138
 6   1708101828100786   平安道远投资管理(上海)有限公司*稳盈8号私募投资基金  101000000138
 7   1705030955106523               平安道远STAR21号私募基金  101000000138
 8       351000411156               平安道远STAR27号私募基金  101000000138
 9       351000398101               平安道远STAR19号私募基金  101000000138
 10  1709211826109370   平安道远投资管理(上海)有限公司*聚盈9号私募投资基金  101000000138
 11      351000337686                平安道远STAR2号私募基金  101000000138
 12      351000411159               平安道远STAR28号私募基金  101000000138
 13      351000337690                平安道远STAR3号私募基金  101000000138
 14      351000398107               平安道远STAR20号私募基金  101000000138
 15      351000337693                平安道远STAR4号私募基金  101000000138
 16      351000411165               平安道远STAR29号私募基金  101000000138
 17  1707061853100889    平安道远投资管理(上海)有限公司安享2号私募投资基金  101000000138
 18      351000398083               平安道远STAR17号私募基金  101000000138
 19  1708040848102372   平安道远投资管理(上海)有限公司*聚盈7号私募投资基金  101000000138
 20      351000411149               平安道远STAR26号私募基金  101000000138
 21  1709291511108826  平安道远投资管理(上海)有限公司*聚盈13号私募投资基金  101000000138
 22  1710231813105885  平安道远投资管理(上海)有限公司*聚盈14号私募投资基金  101000000138
 23      351000398095               平安道远STAR18号私募基金  101000000138
 24  1709291511107303  平安道远投资管理(上海)有限公司*聚盈11号私募投资基金  101000000138
 25      351000337328                平安道远STAR1号私募基金  101000000138
 26  1707311041109446   平安道远投资管理(上海)有限公司*稳盈7号私募投资基金  101000000138
 27      351000264901                    平安道远金锁2号基金  101000000138
 28  1708101828100763   平安道远投资管理(上海)有限公司*聚盈8号私募投资基金  101000000138
 29      351000398143               平安道远STAR25号私募基金  101000000138
 ..               ...                           ...           ...
 42      351000398044               平安道远STAR10号私募基金  101000000138
 43      351000747226    平安道远投资管理(上海)有限公司稳盈1号私募投资基金  101000000138
 44      351000221216           平安养老-平安罗素道远1号资产管理产品  101000000138
 45  1706161700108793   平安道远投资管理(上海)有限公司*稳盈3号私募投资基金  101000000138
 46  1706231903112165   平安道远投资管理(上海)有限公司*稳盈4号私募投资基金  101000000138
 47  1710271905100404  平安道远投资管理(上海)有限公司*稳盈12号私募投资基金  101000000138
 48  1712061714104717   平安道远投资管理(上海)有限公司*稳信1号私募投资基金  101000000138
 49      351000398027                平安道远STAR8号私募基金  101000000138
 50  1709291511109788  平安道远投资管理(上海)有限公司*聚盈12号私募投资基金  101000000138
 51  1707061853100052    平安道远投资管理(上海)有限公司安享4号私募投资基金  101000000138
 52  1707061853100075   平安道远投资管理(上海)有限公司*安享3号私募投资基金  101000000138
 53      351000398070               平安道远STAR15号私募基金  101000000138
 54  1710271905100484  平安道远投资管理(上海)有限公司*聚盈16号私募投资基金  101000000138
 55  1712061714104763   平安道远投资管理(上海)有限公司*稳信3号私募投资基金  101000000138
 56  1712081750117313   平安道远投资管理(上海)有限公司*稳信4号私募投资基金  101000000138
 57  1707251826105335    平安道远投资管理(上海)有限公司稳盈6号私募投资基金  101000000138
 58  1709211826109393   平安道远投资管理(上海)有限公司*稳盈9号私募投资基金  101000000138
 59  1709251754104772  平安道远投资管理(上海)有限公司*稳盈10号私募投资基金  101000000138
 60      351000398079               平安道远STAR16号私募基金  101000000138
 61  1711021522101444  平安道远投资管理(上海)有限公司*聚盈15号私募投资基金  101000000138
 62  1705111733104153    平安道远投资管理(上海)有限公司安享1号私募投资基金  101000000138
 63  1707131617101515               平安道远BIGBANG私募基金  101000000138
 64  1709291511109173  平安道远投资管理(上海)有限公司*稳盈11号私募投资基金  101000000138
 65  1709251754104793   平安道远投资管理(上海)有限公司聚盈10号私募投资基金  101000000138
 66  1712061714104740   平安道远投资管理(上海)有限公司*稳信2号私募投资基金  101000000138
 67      351000767714    平安道远投资管理(上海)有限公司稳盈2号私募投资基金  101000000138
 68      351000398054               平安道远STAR11号私募基金  101000000138
 69  1707251826105314    平安道远投资管理(上海)有限公司聚盈5号私募投资基金  101000000138
 70  1707311041109392   平安道远投资管理(上海)有限公司*聚盈6号私募投资基金  101000000138
 71      351000398063               平安道远STAR12号私募基金  101000000138
 
 [72 rows x 3 columns],
 'tab_resume':            period_date   service_company position          m_id
 0   2015.09 -  2017.04  平安道远投资管理(上海)有限公司  董事长兼总经理  101000000138
 1   2010.10 -  2015.09              平安罗素  董事长兼总经理  101000000138
 2   2009.11 -  2010.08        平安香港投资管理公司   董事常务副总  101000000138
 3   1999.10 -  2009.10            平安香港保险    董事总经理  101000000138
 4   1996.11 -  1999.10            平安香港海外      负责人  101000000138
 5   1996.02 -  1996.11           平安总部核赔部      总经理  101000000138
 6   1995.03 -  1996.02           平安总部核保部      总经理  101000000138
 7   1992.04 -  1995.03           平安总部国际部      总经理  101000000138
 8   1989.09 -  1992.04       深圳平安公司对外业务部      副经理  101000000138
 9   1987.09 -  1989.09            大连海运学院       教师  101000000138
 10  1983.09 -  1985.09            大连海运学院       教师  101000000138}

产品信息提取

class Product(object):
    def __init__(self):
        dfname_dict = {"基金名称:": "fund_nm",
                       "基金编号:": "fund_code",
                       "成立时间:": "establish_date",
                       "备案时间:": "record_date",
                       "基金备案阶段:": "record_stage",
                       "基金类型:": "fund_type",
                       "币种:": "currency_type",
                       "基金管理人名称:": "fund_manager",
                       "管理类型:": "manager_type",
                       "托管人名称:": "trustee_name",
                       "运作状态:": "operate_status",
                       "基金信息最后更新时间:": "last_update",
                       "基金协会特别提示(针对基金):": "specail_message",
                       "月报:": "report_month",
                       "半年报:": "report_halfyear",
                       "年报:": "report_year",
                       "季报:": "report_season"}

        dfname_base = pd.DataFrame()
        dfname_base['index_cn'] = list(dfname_dict.keys())
        dfname_base['index_en'] = list(dfname_dict.values())

        self.url_format = 'http://gs.amac.org.cn/amac-infodisc/res/pof/fund/%s.html'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
            'Connection': 'keep-alive',
            'Content-Type': 'application/json'
        }
        self.dfname_base = dfname_base
        self.xpath_pro = '//td[@class="td-content"]/p/a'

    def get_productInfo(self, id):
        url = self.url_format % id

        try:
            rs = requests.get(url, headers=self.headers)
            # rs.text
            rs.encoding = 'UTF-8'

            tabs = pd.read_html(rs.text)

            # 机构基本信息
            tab_base = tabs[0].iloc[:, 0:2]

            tab_base.columns = ['index_cn', 'val']
            tab_base = tab_base.dropna()
            # print(tab_base)

            tab_base = pd.merge(self.dfname_base, tab_base, how='left')
            tab_base.index = tab_base['index_en']
            tab_base = tab_base[['val']]
            # tab_base.dropna()
            # tab_base

            tab_base['val'] = ['' if isinstance(x, float) and math.isnan(x) else x for x in tab_base['val']]
            tab_base = tab_base.T
            # print(tab_base)
            # tab_base['manager_namecn'][0] = tab_base['manager_namecn'][0].split(' ')[1]
            tab_base['p_id'] = id

            return tab_base
        except:
            return None
prodt = Product()
prodt.get_productInfo(1707311041109392)
``` ``` ``` ```
index_en fund_nm fund_code establish_date record_date record_stage fund_type currency_type fund_manager manager_type trustee_name operate_status last_update specail_message report_month report_halfyear report_year report_season p_id
val 平安道远投资管理(上海)有限公司*聚盈6号私募投资基金 SW3120 2017-07-14 2017-08-01 暂行办法实施后成立的基金 私募证券投资基金 人民币现钞 平安道远投资管理(上海)有限公司 受托管理 平安银行股份有限公司 正在运作 2017-08-01 应披露0条,按时披露0条,未披露0条; 应披露0条,按时披露0条,未披露0条; 应披露0条,按时披露0条,未披露0条; 应披露2条,按时披露2条,未披露0条; 1707311041109392