详解用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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
Python中super关键字用法实例分析
May 28 Python
python中执行shell的两种方法总结
Jan 10 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
python实现停车管理系统
Nov 30 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
python如何删除文件中重复的字段
Jul 16 Python
Python模块 _winreg操作注册表
Feb 05 Python
浅谈Python3多线程之间的执行顺序问题
May 02 Python
python numpy库np.percentile用法说明
Jun 08 Python
全网非常详细的pytest配置文件
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
高亮度显示php源代码
2006/10/09 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
详解Django框架中用context来解析模板的方法
2015/07/20 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
python3中sys.argv的实例用法
2020/04/24 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
诚信考试承诺书
2014/03/27 职场文书
高中学生评语大全
2014/04/25 职场文书
交通文明倡议书
2014/05/16 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
小学见习报告
2014/10/31 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
中标通知书范本
2015/04/17 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
Python天气语音播报小助手
2021/09/25 Python
Docker官方工具docker-registry案例演示
2022/04/13 Servers