详解用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中super关键字用法实例分析
May 28 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
Python中操作mysql的pymysql模块详解
Sep 13 Python
python实现二分查找算法
Sep 21 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
python如何使用Redis构建分布式锁
Jan 16 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
Python批量将csv文件转化成xml文件的实例
May 10 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
php中全局变量global的使用演示代码
2011/05/18 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
微信支付开发交易通知实例
2016/07/12 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
使用python Django做网页
2013/11/04 Python
Python 的 Socket 编程
2015/03/24 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
python实现数据图表
2017/07/29 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python实现彩色图转换成灰度图
2019/01/15 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
大整数数相乘的问题
2012/07/22 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python