爬取企查查,获取企业基本数据

一、代码

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: '保险兼业代理业务;吸收公众存款;发放短期、中期和长期贷款;办理国内外结算;办理票据承兑与贴现;发行金融债券;代理发行、代理兑付、承销政府债券;买卖政府债券、金融债券;从事同业拆借;买卖、代理买卖外汇;从事银行卡业务;提供信用证服务及担保;代理收付款项;提供保管箱服务;结汇、售汇业务;代理开放式基金业务;办理黄金业务;黄金进出口;开展证券投资基金、企业年金基金、保险资金、合格境外机构投资者托管业务;经国务院银行业监督管理机构批准的其他业务。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)'}}
原文地址:https://www.cnblogs.com/angelyan/p/14858612.html