マルチレベルのネストされたjsonを解析するPythonクローラー

個人のブログアドレス https://nfreak-man.cn
が最近Pythonクローラーと接触したばかりです。肺炎が国中に広まったのはごく最近なので、ウェブサイトからリアルタイムの肺炎データをクロールし、必要なデータを解析する予定です。jsonデータを取得するためのURLはhttps://m.look.360.cn/events/feiyanです。

クロールURL:

def main():
    url='https://m.look.360.cn/events/feiyan'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) 		    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 QIHU 360EE'}
    parse_page(url)

json形式のファイルを解析して保存します。

state = json.loads(response.content)
with open("feiyan.json", "w",encoding='utf-8') as f:
	f.write(json.dumps(state,indent=2,ensure_ascii=False))
    print("保存成功")

jsonファイルを取得すると、ネストされた形式で見つかります。特定の形式については、上記のURLを開いて表示できます。

{
 "data":[
 		{
 		 "data":{省份}
         "citys":[
         		  {城市}{}.....
         		 ]		 
 		}
 		{
 		 "data":{省份}
         "citys":[
         		  {城市}{}.....
         		 ]		 
 		}
 "country":[
 			{其他国家}
 		   ]	
 		]
}

jsonソースコード

データの解析

都市の名前、感染数、治療数、死亡数だけを取得したいので、それらを1つずつ取得して出力するには、ネストされたループが必要です。コードは次のとおりです。

地方のデータ収集:

provincename = state['data'][i]['data']['provinceName'] 
confirmedCount = state['data'][i]['data']['confirmedCount']
curedCount = state['data'][i]['data']['curedCount'] 
deadCount = state['data'][i]['data']['deadCount'] 

市のデータ収集:

cityName = state['data'][i]['cities'][j]['cityName']
diagnosed = state['data'][i]['cities'][j]['diagnosed']
cured = state['data'][i]['cities'][j]['cured']
died = state['data'][i]['cities'][j]['died']

海外都市でのデータ収集:

countryname = state['country'][c]['provinceName']
diagnosed = state['country'][c]['diagnosed']
cured = state['country'][c]['cured']
died = state['country'][c]['died']

上記はネストされたjson解析形式です。

出力効果:
出力効果

ソースアドレス:github

元の記事を28件公開 賞賛された0 訪問数722

おすすめ

転載: blog.csdn.net/William_GJIN/article/details/104627664