背景
为引导信贷资金快速直达基层小微企业,由金融监管总局、国家发展改革委牵头,建立了支持小微企业融资协调工作机制,地方相应建立工作机制,从供需两端发力,统筹解决小微企业融资难和银行放贷难的问题。当地政府积极响应,积极向银行提供可能有融资需求的当地小微企业名单,名单所有内容均为公开信息,仔细分析名单后发现,部分企业已注销或处于其他异常状态,所有企业均无企业主联系方式,故本文主要解决两个问题:(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 | 访问是否成功 |