基于DrissionPage的企查查数据采集器

背景

为引导信贷资金快速直达基层小微企业,由金融监管总局、国家发展改革委牵头,建立了支持小微企业融资协调工作机制,地方相应建立工作机制,从供需两端发力,统筹解决小微企业融资难和银行放贷难的问题。当地政府积极响应,积极向银行提供可能有融资需求的当地小微企业名单,名单所有内容均为公开信息,仔细分析名单后发现,部分企业已注销或处于其他异常状态,所有企业均无企业主联系方式,故本文主要解决两个问题:(1)企业状态;(2)企业联系方式。本文使用DrissionPage自动化工具在企查查上获取上诉企业信息。具体实现方法如下:

一、查询关键词

观察数据后发现:(1)除了带"*"号的个体工商户名称不唯一以外,其余企业名称均唯一;(2)部分企业无工商注册号,所有企业均有唯一的统一社会信用代码,但名单中未提供。因此,除了带"*"号的个体工商户使用工商注册号查询,其余企业均使用企业名称查询。

python 复制代码
search_data=[]
for i in range(len(company_name)):
    if "*" in company_name[i]:
        search_data.append(company_number[i])
    else:
        search_data.append(company_name[i])
print("查询企业数量:",len(search_data))

二、登录

打开浏览器,创建新的标签页,并输入企查查网址(https://www.qcc.com/),使用手机企查查app手动扫码登录。

python 复制代码
#导入用于控制浏览器的类Chromium
from DrissionPage import Chromium
from DrissionPage import ChromiumOptions
import pandas as pd
import time
#创建配置对象
co=ChromiumOptions()
#设置不加载图片
co.no_imgs(False)
#创建一个Chromium对象,用于连接浏览器
browser=Chromium(addr_or_opts=co)
#获取一个标签页(tab)对象。
tab=browser.get_tab()
#打开企查查网页
tab.get('https://www.qcc.com/')
flag=True
#预登录功能(检查登录是否成功)
while flag:
    check=input("是否登录成功(y/n?):")
    if check=="y":
        print("登录成功")
        flag=False

三、获取数据

python 复制代码
''
获取如下信息:
1、企业状态;
2、电话。
'''
data_matrix=[]
#创建一个df用于存放获取的数据
n=0
for i in search_data[700:900]:
    data_list=[]
    data_list.append(i)
    # 检测是否出现验证码
    try:
        tab.ele("@class=btn btn-primary captcha-btn").click()
        flag1 = True
        while flag1:
            captcha = input("出现验证码,是否通过验证(y/n?):")
            if captcha == "y":
                print("验证成功")
                flag1 = False
    except Exception as e:
        print("未出现验证码,继续获取数据。")
    websit = "https://www.qcc.com/web/search?key=" + i
    search_tab=tab.get(websit)
    if not search_tab:
        break
    n+=1
    print("查询成功:",n)
    try:
        nstatus=tab.ele("@class=nstatus text-success").text
        data_list.append(nstatus)
    except Exception as e:
        data_list.append("异常")
    try:
        phone_number=tab.ele("xpath://div/span[@class='f tel']/span").text
        data_list.append(phone_number)
    except Exception as e:
        data_list.append("无电话")
    print(data_list)
    data_matrix.append(data_list)
if data_matrix !=[]:
    data=pd.DataFrame(data_matrix).to_excel("output.xlsx")

验证码

1、频繁访问网页会弹出验证码,由于验证码过于复杂,本文采取人工验证的方式通过验证,即当页面中出现验证码时,人工通过验证后,继续获取数据。

get()

该方法用于跳转到一个网址。当连接失败时,程序会进行重试。tab.get()函数返回bool值,网页加载失败后,保存之前获取到的数据,并结束程序。

返回类型 说明
bool 访问是否成功

参考文献

DrissionPage官网

相关推荐
dubochao_xinxi11 小时前
fastapi 接收10g 以上的文件 pandas 读取超过 10GB 的 Excel 文件
excel·pandas·fastapi
N***73851 天前
后端数据一致性
hdfs·pandas·sstable
江上月5132 天前
Pandas 高级教程:解锁数据分析的强大潜能
数据挖掘·数据分析·pandas
AI小云5 天前
【数据操作与可视化】Pandas数据处理-其他操作
python·pandas
飞梦工作室10 天前
突破 pandas 瓶颈:实时读写 Excel 与超透视汇总函数的双维解决方案
python·excel·pandas
Python大数据分析@10 天前
Vaex :突破pandas,快速分析100G大数据量
pandas
AI小云10 天前
【数据操作与可视化】Pandas数据处理-Series数据结构
开发语言·数据结构·python·numpy·pandas
小兔崽子去哪了12 天前
Numpy、Panads
python·numpy·pandas
一晌小贪欢13 天前
Pandas操作Excel使用手册大全:从基础到精通
开发语言·python·自动化·excel·pandas·办公自动化·python办公
CodeLongBear15 天前
Python数据分析 -- Pandas基础入门学习笔记:从核心概念到实操代码
python·conda·pandas