Python爬虫類を使って、百度企業信用の中の企業基本情報を取得します。


一、背景
企業名によって経緯度、所在する省、都市などの情報を調べたいです。企業名を直接百度地図に伝えて提供するAPIは、得られた経緯度が非常に正確ではないので、企業の完全な地理的位置を取得したいです。
Baiduの企業信用は企業基本情報の検索機能を提供しています。Python爬虫類を通じて企業基本情報を取得したいです。この需要はほぼ実現されました。
本文は最後に具体的なコードを提供します。コードは学習の参考だけにして、悪意を持ってデータを登らないでくださいを望みます。
二、分析
蘇寧を例にとる。「江蘇蘇寧」を入力した後、検索結果は以下の通りです。

分析の結果、ここに示した企業情報はJavaScriptを用いて動的に生成された。サーバーから最初に送信された未レンダリングHTMLは以下の通りです。

注意その中に表示されているJSコードに注意してください。面白いことに、企業の基本情報はこのJSコードから直接入手できます。複雑なパラメータを構築する必要がありません。

これはさらに調べた結果で、その「reult List」に注目して、後に保存されているのがページの企業情報です。正規表現を用いて必要な文字列を抽出し、JSONに変換すれば良いことは明らかである。
三、ソースコード
下記のコードはある企業の基本情報を調べるためにAPIを提供します。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Wild Orange
# @Email: [email protected]
# @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_に伝えます。companyinfo:

res=Get_company_info('    ')
	print(res)
結果:

注意したいのは:
辞書で構成される配列を返します。各辞書要素は企業の情報を表します。手順はブラウザに表示される順序と同じです。辞書の中のパラメータの意味はすでに_にあります。パーシ_baiducompanyinfo関数のコメントで説明します。プログラムは最初のページの情報だけを取得します。複数のページを検索するなら、ソースを修正することができます。プログラムは企業の基本情報だけを取得して、企業の具体的なページに入っていません。ただし、戻り結果のpidまたはbidは、照会ページのURLを作成するために使用できるはずである。
最後にもう一度強調します。コードは勉強の参考だけにして、悪意のないデータを登らないでください。
ここで、Python爬虫類を使って百度企業の信用の中で企業の基本情報を得た文章について紹介します。Python爬虫類は百度企業の信用内容を取得します。私達の以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。