查看原文
其他

案例实战 | 企业信息数据采集

大邓 大邓和他的Python 2022-07-09


企业信息-爱企查

想搜集企业信息,可以使用爱企查网站,例如通过该网站,搜”华为“,,可以获得与关键词华为相关的很多企业名信息

设计网络爬虫步骤

  1. 使用开发者工具network面板审查网站的网址规律urls
  2. 对单个网址url尝试访问
  3. 确定网站是html或json类型
  4. 从网页中解析定位需要的数据。
  • 使用pyquery解析html页面数据;
  • 或使用json解析json页面数据
  • 存储到csv
  • 重复2-5
  • 如果对python网络爬虫不了解,想入门系统学习,可以考虑入门我的视频专栏课



    尝试访问第一页

    经过开发者工具network,可以使用requests对其进行访问。

    需要注意的是,headers中需要加入Referer参数,该参数作用是告诉服务器

    兄弟,我是经过Referer介绍的,不然我也不可能知道数据存放在 

    https://aiqicha.baidu.com/s/advanceFilterAjax?q=%E5%8D%8E%E4%B8%BA&t=&p=1&s=10&o=0&f=%7B%7D 

    这个网址啊

    so,Referer就是网站验证我是友军还是敌军的暗号。

    import requests
    from urllib.parse import quote

    query = '华为'

    url = 'https://aiqicha.baidu.com/s/advanceFilterAjax?q={q}&t=&p=1&s=10&o=0&f=%7B%7D'.format(q=quote(query))

    headers = {'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36',
               'Referer''https://aiqicha.baidu.com/s?q={q}&t=0'.format(q=quote(query))}

    resp = requests.get(url, headers=headers)
    resp
    <Response [200]>

    解析网页数据

    通过开发者工具可以看到,这个网站采用的json类型网页数据。

    好在这类网页的解析定位比较简单。

    for com in resp.json()['data']['resultList'][:3]:
        print(com)
        print()
    {'pid': '31360200662522', 'entName': '<em>华为</em>技术有限公司', 'entType': '有限责任公司(自然人投资或控股的法人独资)', 'validityFrom': '1896-08-14', 'domicile': '深圳市龙岗区坂田<em>华为</em>总部办公楼', 'entLogo': 'https://zhengxin-pub.cdn.bcebos.com/logopic/67e739bf0e47768f4a1f542daf3f7f42_fullsize.jpg', 'openStatus': '开业', 'legalPerson': '赵明路', 'tags': {'laTaxer': '<span class="zx-ent-tag laTaxer">A级纳税人(2020)</span>'}, 'logoWord': '华为技术', 'titleName': '华为技术有限公司', 'titleLegal': '赵明路', 'titleDomicile': '深圳市龙岗区坂田华为总部办公楼', 'levelAtaxer': [2020, 2018, 2019, 2016, 2017, 2014, 2015], 'regCap': '5,035,113.2万', 'scope': '一般经营项目是:程控交换机、传输设备、数据通信设备、宽带多媒体设备、电源、无线通信设备、微电子产品、软件、系统集成工程、计算机及配套设备、终端设备及相关通信信息产品、数据中心机房基础设施及配套产品(含供配电、空调制冷设备、智能管理监控等)的开发、生产、销售、技术服务、工程安装、维修、咨询、代理、租赁;信息系统设计、集成、运行维护;集成电路设计、研发;统一通信及协作类产品,服务器及配套软硬件产品,存储设备及相关软件的研发、生产、销售;无线数据产品(不含限制项目)的研发、生产、销售;通信站点机房基础设施及通信配套设备(含通信站点、通信机房、通信电源、机柜、天线、通信线缆、配电、智能管理监控、锂电及储能系统等)的研发、生产、销售;能源科学技术研究及能源相关产品的研发、生产、销售;大数据产品、物联网及通信相关领域产品的研发、生产、销售;汽车零部件及智能系统的研发、生产、销售及服务;建筑工程;设计、制作、发布、代理各类广告;通信设备租赁(不含限制项目);培训服务;技术认证服务;信息咨询(不含限制项目);企业管理咨询(不含限制项目);进出口业务;国内商业、物资供销业业务(不含专营、专控、专卖商品);对外经济技术合作业务;房屋租赁业务(持许可经营证);以及其他法律法规不禁止的经营活动(依法须经批准的项目,经相关部门批准后方可开展经营活动)。,许可经营项目是:增值电信业务经营。', 'regNo': '815503001822039217', 'hitReason': [{'品牌项目': '<em>华为</em>'}, {'商标名称': '<em>华为</em>'}, {'企业名称': '<em>华为</em>技术有限公司'}, {'网站名称': '<em>华为</em>应用平台1'}, {'地址': '深圳市龙岗区坂田<em>华为</em>总部办公楼'}], 'labels': {'opening': {'text': '开业', 'style': 'blue', 'fontColor': '#1EA930', 'bgColor': '#EBF6EC'}}, 'personTitle': '法定代表人', 'personId': 'a9f275934f59110096757b656ba41382'}

    {'pid': '28610144220343', 'entName': '<em>华为</em>终端(深圳)有限公司', 'entType': '有限责任公司(外商投资、非独资)', 'validityFrom': '2003-12-25', 'domicile': '深圳市龙岗区坂田<em>华为</em>基地B区2号楼', 'entLogo': 'https://zhengxin-pub.cdn.bcebos.com/logopic/a638462a7a48ab79f84b7db2c0e64230_fullsize.jpg', 'openStatus': '开业', 'legalPerson': '赵明路', 'tags': {'laTaxer': '<span class="zx-ent-tag laTaxer">A级纳税人(2020)</span>'}, 'logoWord': '华为终端', 'titleName': '华为终端(深圳)有限公司', 'titleLegal': '赵明路', 'titleDomicile': '深圳市龙岗区坂田华为基地B区2号楼', 'levelAtaxer': [2020, 2018, 2019, 2016, 2017, 2014, 2015], 'regCap': '1,598,080.8万', 'scope': '一般经营项目是:开发、生产、销售通信电子产品及配套产品,并提供技术咨询和售后服务。进出口业务(不含分销)。,许可经营项目是:', 'regNo': '815503006447640305', 'hitReason': [{'企业名称': '<em>华为</em>终端(深圳)有限公司'}, {'网站名称': '<em>华为</em>HARMONYOS网站'}, {'地址': '深圳市龙岗区坂田<em>华为</em>基地B区2号楼'}], 'labels': {'opening': {'text': '开业', 'style': 'blue', 'fontColor': '#1EA930', 'bgColor': '#EBF6EC'}}, 'personTitle': '法定代表人', 'personId': 'a9f275934f59110096757b656ba41382'}

    {'pid': '30140456955334', 'entName': '<em>华为</em>终端有限公司', 'entType': '有限责任公司(外商投资企业法人独资)', 'validityFrom': '2012-11-23', 'domicile': '广东省东莞市松山湖园区新城路2号', 'entLogo': 'https://zhengxin-pub.cdn.bcebos.com/logopic/cc662a5d573b793e9c5b84031350ced0_fullsize.jpg', 'openStatus': '开业', 'legalPerson': '赵明路', 'tags': {'laTaxer': '<span class="zx-ent-tag laTaxer">A级纳税人(2020)</span>'}, 'logoWord': '华为终端', 'titleName': '华为终端有限公司', 'titleLegal': '赵明路', 'titleDomicile': '广东省东莞市松山湖园区新城路2号', 'levelAtaxer': [2020, 2018, 2019, 2016, 2017, 2014, 2015], 'regCap': '70,000.0万', 'scope': '开发、生产、销售:通信及电子产品、计算机、卫星电视接收天线、高频头、数字卫星电视接收机及前述产品的配套产品,并提供技术咨询和售后服务;开发、生产、销售:医疗器械(第一类、第二类、第三类医疗器械),并提供技术咨询和售后服务;增值电信业务经营;佣金代理;货物或技术进出口(国家禁止或涉及行政审批的货物和技术进出口除外)。(依法须经批准的项目,经相关部门批准后方可开展经营活动)', 'regNo': '815518000494355853', 'hitReason': [{'企业名称': '<em>华为</em>终端有限公司'}], 'labels': {'opening': {'text': '开业', 'style': 'blue', 'fontColor': '#1EA930', 'bgColor': '#EBF6EC'}}, 'personTitle': '法定代表人', 'personId': 'a9f275934f59110096757b656ba41382'}

    完整爬虫

    经过刚刚的几个步骤,我们现在只需要

    import csv
    import requests
    import time

    query = '华为'  
    max_pages = 10   #获取前10页的企业信息数据

    #存储数据
    csvf = open('企业信息.csv''a+', encoding='utf-8', newline='')
    fieldnames = ['titleName''titleDomicile''titleLegal''validityFrom''regCap''regNo''scope']
    writer = csv.DictWriter(csvf, fieldnames=fieldnames)
    writer.writeheader()

    #访问
    for page in range(1, max_pages):
        url = 'https://aiqicha.baidu.com/s/advanceFilterAjax?q={q}&t=&p={p}&s=10&o=0&f=%7B%7D'.format(q=quote(query), p=page)

        headers = {'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36',
               'Referer''https://aiqicha.baidu.com/s?q={q}&t=0'.format(q=quote(query))}

        resp = requests.get(url, headers=headers)
        
        #解析数据
        for com in resp.json()['data']['resultList']:
            data = dict()
            for fieldname in fieldnames:
                data[fieldname] = com[fieldname]
            #写入csv
            writer.writerow(data)
            

    csvf.close()

    运行结果

    采集10页的爬虫运行结束后,尝试读取 企业信息.csv

    import pandas as pd

    df= pd.read_csv('企业信息.csv')
    df.head()


    近期文章

    视频专栏课 | Python网络爬虫与文本分析

    如何在DataFrame中使用If-Else条件语句创建新列

    BERTopic 主题建模库 | 建议收藏

    KeyBERT库 | 自动挖掘文本中的关键词

    SmartScraper | 简单、自动、快捷的Python网络爬虫

    SHAP | 机器学习模型解释库

    ashares库 | A股市场历史行情数据

    Backtrader库 | 均线买入卖出策略实现

    读完本文你就了解什么是文本分析

    文本分析在经管领域中的应用概述

    综述:文本分析在市场营销研究中的应用

    在会计研究中使用Python进行文本分析

    文本分析方法在《管理世界》(2021.5)中的应用

    hiResearch 定义自己的科研首页

    SciencePlots | 科研样式绘图库

    Wow~70G上市公司定期报告数据集

    漂亮~pandas可以无缝衔接Bokeh  

    YelpDaset: 酒店管理类数据集10+G

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存