详解用Python爬虫获取百度企业信用中企业基本信息


Posted in Python onJuly 02, 2020

一、背景

希望根据企业名称查询其经纬度,所在的省份、城市等信息。直接将企业名称传给百度地图提供的API,得到的经纬度是非常不准确的,因此希望获取企业完整的地理位置,这样传给API后结果会更加准确。
百度企业信用提供了企业基本信息查询的功能。希望通过Python爬虫获取企业基本信息。目前已基本实现了这一需求。
本文最后会提供具体的代码。代码仅供学习参考,希望不要恶意爬取数据!

二、分析

以苏宁为例。输入“江苏苏宁”后,查询结果如下:

详解用Python爬虫获取百度企业信用中企业基本信息

经过分析,这里列示的企业信息是用JavaScript动态生成的。服务器最初传过来的未经渲染的HTML如下:

详解用Python爬虫获取百度企业信用中企业基本信息

注意其中标注出来的JS代码。有意思的是,企业基本信息都可以直接从这段JS代码中获取,无需构造复杂的参数。

详解用Python爬虫获取百度企业信用中企业基本信息

这是进一步查看的结果,注意那个“resultList”,后面存放的就是页面中的企业信息。显然,利用正则表达式提取需要的字符串,转换成JSON就可以了。

三、源码

以下代码为查询某个企业的基本信息提供了API:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Wild Orange
# @Email: jixuanfan_seu@163.com
# @Date:  2020-06-19 22:38:14
# @Last Modified time: 2020-07-01 17:33:13

import requests
import re
import json

headers={'User-Agent': 'Chrome/76.0.3809.132'}

#正则表达式提取数据
re_get_js=re.compile(r'<script>([\s\S]*?)</script>')
re_resultList=re.compile(r'"resultList":(\[{.+?}\]}])')

def Get_company_info(name):
	'''
		@func: 通过百度企业信用查询企业基本信息
	'''
	url='https://xin.baidu.com/s?q=%s'%name
	res=requests.get(url,headers=headers)
	if res.status_code==200:
		html=res.text
		retVal=_parse_baidu_company_info(html)
		return retVal
	else:
		print('无法获取%s的企业信息'%name)

def _parse_baidu_company_info(html):
	'''
		@function:解析百度企业信用提供的企业基本信息
		@output: list of dict, [{},{},...]
			pid: 跳转到具体企业页面的参数
			bid: 具体企业页面URL中的参数
			name: 企业名称
			type: 企业类型
			date: 成立日期
			address: 地址
			person: 法人代表
			status: 存续状态
			regCap: 注册资本
			scope: 经营范围
	'''
	js=re_get_js.findall(html)[1]
	data=re_resultList.search(js)
	if not data:
		return
	compant_list=json.loads(data.group(1))
	
	retVal=[]
	for x in compant_list:
		regCap=x['regCap'].replace(',','')
		if regCap[-1]=='万':
			regCap=regCap[:-1]
		regCap=float(regCap)
		address=x['domicile'].replace('<em>','').replace('</em>','')
		
		temp_v={'pid':x['pid'],'bid':x['bid'],'name':x['titleName'],'type':x['entType'],'date':x['validityFrom'],\
				'address':address,'person':x['legalPerson'],'status':x['openStatus'],'regCap':regCap,\
				'scope':x['scope']}
		retVal.append(temp_v)
	return retVal

四、使用方法

直接将需要查询的企业名称传入Get_company_info:

res=Get_company_info('江苏苏宁')
	print(res)

结果:

详解用Python爬虫获取百度企业信用中企业基本信息

需要注意的是:

返回的是字典构成的数组,每个字典元素代表一家企业的信息。顺序与浏览器中显示的顺序相同。字典中参数的含义已在_parse_baidu_company_info函数的注释中说明。程序仅获取第一页的信息。如果要查询多页,可以修改源码。程序仅获取企业的基本信息,没有进入企业的具体页面,如:苏宁物流具体页面。不过返回结果中的pid或bid应该能用于构造查询页面的URL。

最后再次强调:代码仅供学习参考,希望不要恶意爬取数据!

到此这篇关于详解用Python爬虫获取百度企业信用中企业基本信息的文章就介绍到这了,更多相关Python爬虫获取百度企业信用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之有容乃大的list(1)
Sep 14 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python科学计算之narray对象用法
Nov 25 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
利用python实现逐步回归
Feb 24 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
Python如何加载模型并查看网络
Jul 15 Python
django 实现后台从富文本提取纯文本
Jul 02 #Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 #Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 #Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 #Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 #Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 #Python
python解释器安装教程的方法步骤
Jul 02 #Python
You might like
第十二节 类的自动加载 [12]
2006/10/09 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
详谈javascript异步编程
2016/02/21 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
初学Python函数的笔记整理
2015/04/07 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
python开发前景如何
2020/06/11 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
法学院方阵解说词
2014/01/29 职场文书
决心书范文
2014/03/11 职场文书
留守儿童工作方案
2014/06/02 职场文书
党支部特色活动方案
2014/08/20 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书