爬取信用中国数据
爬取信用中国数据
该网站可以用企业名称或统一社会信用代码查询法人、地址、行政许可、征信等信息。
下面我们以小米科技有限责任公司为例进行代码实现。
首先建立一个基本的爬取框架,需要请求地址URL、请求头headers、主体名称name,用requests的get方法得到请求内容。
import requests
import json
name = ''
url = ''
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
}
response = requests.get(url=url, headers=headers)
接下来我们对网页内容进行分析。
在信用中国中搜索小米科技有限责任公司,打开浏览器的开发者工具,点击网络->XHR可以看到如中的内容,点击链接对内容进行分析。
标头中的请求URL是我们在爬虫中所需要设定的地址,不同的URL对应着不同的数据,在预览中可以看到该URL下返回的信息,响应则是我们get到的数据的具体内容。
下图中返回的是请求成功的标志。
下图中是请求行政许可、行政处罚、守信激励的数据。
这里我们对该信息进行爬取。
回到标头中对该信息的请求URL进行分析:该URL中可以看到有这样的关键信息,keyword=小米科技有限责任公司,这说明我们要得到该部分信息,至少需要包含该部分内容,后面有tyshxydm=91110108551385082Q,这是统一社会信用代码,这里我们先不用考虑它,因为该网站的检索有两种方式(信用代码和个体名称)。将分析到的信息填入代码中进行运行,得到如下结果,可以发现爬取到了该部分内容。
https://public.creditchina.gov.cn/private-api/searchDateTypeCount?entityType=1&searchState=1&keyword=小米科技有限责任公司&tyshxydm=91110108551385082Q
import requests
import json
name = '小米科技有限责任公司'
url = 'https://public.creditchina.gov.cn/private-api/searchDateTypeCount?entityType=1&searchState=1&keyword={}'.format(name)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
}
response = requests.get(url=url, headers=headers)
print(response.text) # response.text是将返回信息转成字符串格式
ddict = json.loads(response.text) # json.loads()是将字符串转为字典格式,方便数据提取
再看下一个请求内容。该请求下返回了多组数据内容为行政许可的信息,其URL为如下。在其URL中可以发现要获取行政许可的信息需要加上type=行政许可,若要获取守信激励也是同理。
https://public.creditchina.gov.cn/private-api/typeSourceSearch?source=&type=行政许可&searchState=1&entityType=1&scenes=defaultscenario&keyword=小米科技有限责任公司&page=1&pageSize=10&tyshxydm=91110108551385082Q
用该程序实现发现,可以获得守信激励的信息。
import requests
import json
name = '小米科技有限责任公司'
url = 'https://public.creditchina.gov.cn/private-api/typeSourceSearch?source=&type=守信激励&searchState=1&entityType=1&scenes=defaultscenario&keyword=小米科技有限责任公司&page=1&pageSize=10&tyshxydm=91110108551385082Q'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
}
response = requests.get(url=url, headers=headers)
print(response.text)
最后用一个例子结尾:
根据社会信用代码爬取企业信用激励年份并保存至excel文档中,结果如下:
import requests
import xlwt
import json
workbook = xlwt.Workbook(encoding='utf-8')
# 设置Excel样式
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = '微软雅黑'
style.font = font
sheet = workbook.add_sheet(f"sheet_{1}")
# 设置列宽
sheet.col(0).width = 128 * 50
sheet.col(1).width = 128 * 50
# 设置表头
sheet.write(0, 0, "公司名称")
sheet.write(0, 1, "信用代码")
sheet.write(0, 2, "年份")
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',
}
code_data=''
i = 0
while True:
try:
code_data = input('请输入统一社会信用代码:')
if code_data =='-1':
break
to_get_name = 'https://public.creditchina.gov.cn/private-api/catalogSearchHome?keyword={}&scenes=defaultScenario&tableName=credit_xyzx_tyshxydm&searchState=2&entityType=1,2,4,5,6,7,8'.format(code_data)
try:
response = json.loads(requests.get(url=to_get_name, headers=headers).text)
except:
print('connect error')
continue
name_data = response['data']['list'][0]['accurate_entity_name'] # 名称
url = 'https://public.creditchina.gov.cn/private-api/typeSourceSearch?source=&type=守信激励&searchState=1&entityType=1&scenes=defaultscenario&keyword={}&page=1&pageSize=10&tyshxydm={}'.format(name_data,code_data)
print(name_data,code_data)
#print(requests.get(url=url, headers=headers).text)
try:
response = requests.get(url=url, headers=headers).text
except:
print('connect error')
continue
response = json.loads(response)
#response = eval(requests.get(url=url, headers=headers).text)
response = response['data']['list']
num = len(response)
sheet.write(i+1, 0, name_data)
sheet.write(i+1, 1, code_data)
for j in range(num):
try:
sheet.write(i+1, 2+j, str(response[j]['entity']['pjnd']))
except:
continue
#print(response[i]['entity']['pjnd']) # 只爬取了源自税务局的数据,还有来源海关总署、交通部的数据,需要额外设置参数。
print("write done")
i = i+1
except:
workbook.save("my_excel.xls")
workbook.save("my_excel.xls")
print("生成excel表完成!")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义