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

相关推荐
姜—姜3 天前
数据分析总结
数据挖掘·数据分析·numpy·pandas·matplotlib·jieba·seaborn
万粉变现经纪人8 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘transformers’问题
人工智能·python·beautifulsoup·pandas·scikit-learn·pip·ipython
史锦彪11 天前
Pandas 入门:数据分析的得力工具
数据挖掘·数据分析·pandas
Wangsk13311 天前
用 Python 批量处理 Excel:从重复值清洗到数据可视化
python·信息可视化·excel·pandas
木木子999911 天前
Pandas query() 方法详解
pandas·query
修钩.17 天前
力扣 Pandas 挑战(5)---数据分组
算法·leetcode·pandas
万粉变现经纪人17 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘plotly’问题
python·scrapy·plotly·pycharm·flask·pandas·pip
码界奇点18 天前
Python深度挖掘:openpyxl与pandas高效数据处理实战指南
开发语言·数据库·python·自动化·pandas·python3.11
码界筑梦坊18 天前
91-基于Spark的空气质量数据分析可视化系统
大数据·python·数据分析·spark·django·numpy·pandas
蔷薇のぬ18 天前
Python 使用pandas库实现Excel字典码表对照自动化处理
python·pandas