基于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官网

相关推荐
Cici_ovo22 分钟前
数据分析入门和实践学习——Pandas 数据处理与分析
信息可视化·pandas
山河不见老2 天前
【Pandas】Python自动汇总Excel数据生成报表———数据处理二)
python·excel·pandas
琅中之嶹3 天前
python股票数据分析(Pandas)练习
python·数据分析·pandas
mqiqe4 天前
Pandas 操作Excel
excel·pandas
神奇夜光杯4 天前
Python酷库之旅-第三方库Pandas(250)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
jimox_ai4 天前
pandas 读写excel
pandas
敲代码不忘补水9 天前
Python Matplotlib 经典 3D 绘图类型:从二维到三维的可视化解析
开发语言·python·3d·数据分析·numpy·pandas·matplotlib
AI小杨9 天前
【数据分析】一、pandas数据处理指南:100个基于pandas数据预处理方法
python·数据挖掘·数据分析·pandas·pandas使用技巧
敲代码不忘补水13 天前
Python Matplotlib 数据可视化全面解析:选择它的七大理由与入门简介
开发语言·python·信息可视化·numpy·pandas·matplotlib