zoukankan      html  css  js  c++  java
  • 爬取企查查,获取企业基本数据

    一、代码

    import random
    from bs4 import BeautifulSoup
    import requests
    import pandas as pd
    import os
    import time
    
    # 获取cookies
    def get_cookies():
        headers = {
            "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
        }
        url = "https://www.qcc.com"
        res = requests.get(url=url,headers=headers)
        return res.cookies
    
    cookies=get_cookies()
    
    # 有些大企业的基础信息不在首页,需要二次请求
    def get_cbase(id):
        url="https://www.qcc.com/cbase/"+id
        headers = {
            "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
            # 'X-Forwarded-For': get_ip()
        }
        res=requests.get(url,headers=headers,cookies=cookies)
        soup = BeautifulSoup(res.text, 'lxml')
        table = soup.find_all('table')[0]
        df = pd.read_html(str(table))[0]
        return df
    
    
    
    def get_company_df(company):
        company=company.replace("(","").replace(")","")
        headers = {
            "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
        }
        url = "https://www.qcc.com/web/search"
        params = {
            "key": company,
        }
        res = requests.get(url=url, params=params, headers=headers,cookies=cookies)
        soup = BeautifulSoup(res.text, 'lxml')
        maininfo = soup.find_all(attrs={"class": "maininfo"})
        if maininfo:
            em_list=maininfo[0].find_all("a")[0].find_all("span")[0].find_all("em")
            company_name=""
            for em in em_list:
                company_name+=em.text # 获取搜索到的企业名称
            if company_name==company: # 判断是否为需要查询的企业名称
                print("ok")
                href = maininfo[0].find_all("a")[0].attrs.get('href')
                print(href)
                res = requests.get(url=href, headers=headers,timeout=60)
                # print(res.text)
                soup = BeautifulSoup(res.text, 'lxml')
                table = soup.find_all('table')[0]
                df = pd.read_html(str(table))[0]
                if len(df)<5:
                    return get_cbase(href.strip(".html").split("/")[-1])
                return df

    二、效果

    # 注意访问频率,就可避免封ip跳验证码
    res=get_company_df("中信银行股份有限公司")
    print(res.to_dict())
    
    {0: {0: '统一社会信用代码', 1: '法定代表人', 2: '注册资本', 3: '组织机构代码', 4: '企业类型', 5: '所属行业', 6: '人员规模', 7: '英文名', 8: '注册地址', 9: '经营范围'}, 1: {0: '91110000101690725E', 1: '李庆萍 关联7家企业 >', 2: '4893479.6573万元人民币', 3: '10169072-5', 4: '其他股份有限公司(上市)', 5: '货币金融服务', 6: '4000-4999人', 7: 'China Citic Bank Corporation Limited', 8: '北京市朝阳区光华路10号院1号楼6-30层、32-42层  查看地图 附近企业', 9: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}, 2: {0: '企业名称', 1: '登记状态', 2: '实缴资本', 3: '工商注册号', 4: '营业期限', 5: '所属地区', 6: '参保人数', 7: 'China Citic Bank Corporation Limited', 8: '北京市朝阳区光华路10号院1号楼6-30层、32-42层  查看地图 附近企业', 9: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}, 3: {0: '中信银行股份有限公司', 1: '存续(在营、开业、在册)', 2: '4678732.7034万元人民币', 3: '100000000006002', 4: '1987-04-20 至 无固定期限', 5: '北京市', 6: '4576', 7: 'China Citic Bank Corporation Limited', 8: '北京市朝阳区光华路10号院1号楼6-30层、32-42层  查看地图 附近企业', 9: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}, 4: {0: '中信银行股份有限公司', 1: '成立日期', 2: '核准日期', 3: '纳税人识别号', 4: '纳税人资质', 5: '登记机关', 6: '曾用名', 7: '进出口企业代码', 8: '北京市朝阳区光华路10号院1号楼6-30层、32-42层  查看地图 附近企业', 9: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}, 5: {0: '中信银行股份有限公司', 1: '1987-04-20', 2: '2021-01-13', 3: '91110000101690725E', 4: '一般纳税人', 5: '北京市市场监督管理局', 6: '-', 7: '1100101690725', 8: '北京市朝阳区光华路10号院1号楼6-30层、32-42层  查看地图 附近企业', 9: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}, 6: {0: nan, 1: nan, 2: nan, 3: nan, 4: nan, 5: nan, 6: nan, 7: nan, 8: '北京市朝阳区光华路10号院1号楼6-30层、32-42层  查看地图 附近企业', 9: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}}
  • 相关阅读:
    elasticsearch-head插件基本使用
    Windows包管理工具-Chocolatey
    php-fpm常用操作
    nginx之日志处理
    进程管理工具之supervisor(完整版)
    Elasticsearch之常见问题
    支付宝支付功能接入(PC)
    UnityWebRequest 高级API常用的操作
    UnityWebRequest
    logback中使用日期做为文件目录
  • 原文地址:https://www.cnblogs.com/angelyan/p/14858612.html
Copyright © 2011-2022 走看看