日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 調用API接口 獲取和解析 Json數據

瀏覽:4日期:2022-07-09 16:23:22

任務背景:

調用API接口數據,抽取我們所需類型的數據,并寫入指定mysql數據庫。

先從宏觀上看這個任務,并對任務進行分解:

step1:需要學習python下的通過url讀取數據的方式;

step2:數據解析,也是核心部分,數據格式從python角度去理解,是字典?列表?還是各種嵌套?

step3:連接mysql數據庫,將數據寫入。

從功能上看,該數據獲取程序可以分為3個方法,即step1對應方法request_data(),step2對應方法parse_data(),step3對應data_to_db()。

第一輪,暫不考慮異常,只考慮正常狀態下的功能實現。

1、先看request_data():

import requests def request_data(url): req = requests.get(url, timeout=30) # 請求連接 req_jason = req.json() # 獲取數據 return req_jason

入參:url地址;return:獲取到的數據。

2、然后看parse_data():

不同的API接口下的數據格式各不相同,需要先理清,打開之后密密麻麻一大串,有的可能連完整的一輪數據間隔在哪都不知道,這時候可以巧用符號{ [ , ] }輔助判斷。

梳理之后,發現本接口下的數據格式為,最外層為字典,我們所需的數據在第一個key“data”下,data對應的value為列表,列表中的每個元素為字典,字典中的部分鍵值

即為我們需要的內容。這樣,就明確了我們的數據結構為字典套列表,列表再套字典的格式,最后一層的字典還存在一鍵多值(比如“weather”)的情況。

當然,還有懶人方法,就是百度json在線解析格式化。

摘取部分數據如下:{'data':[{'timestamp_utc':'2020-08-31T08:00:00','weather':{'icon':'c02d','code':802,wind_dir':336,'clouds_hi':0,'precip':0.0625},{'timestamp_utc':'2020-08-31T08:00:00','weather':{'icon':'c02d','code':802,},wind_dir':336,'clouds_hi':0,'precip':0.0625],'city_name':'Dianbu','lon':117.58,'timezone':'Asia/Shanghai','lat':31.95,'country_code':'CN'}

def parse_data(req_jason): data_trunk = req_jason[’data’]# 獲取data鍵值下的列表 time_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #獲取當前時刻 for i in range(len(data_trunk)): data_unit = data_trunk[i] # 依次獲取列表下第i個元素即字典 del data_unit[’weather’] # 刪除該字典中不需要的一鍵多值的key和value,不刪除的話會影響后續的dataframe轉換,但是,如果該鍵值需要的話,需要采取其他處理方式 df = pd.DataFrame([data_unit]) # 將刪除鍵值后的字典轉為datafrme list_need = [’timestamp_utc’, ’wind_dir’, ’precip’,’clouds_hi’] # 列出我們需要的列 df_need = df[list_need] # 保留df中需要的列 10 df_need.insert(0, ’update_time’, time_now) #表格中還需額外增加獲取數據的當前時間,并且需要放在dataframe的第一列

備注:數據插入數據庫,有兩種方式,一種是采用insert的sql語句,采用字典的形式插入,另一種是采用dataframe的方式,采用pandas中的to_sql方法。本案例選擇了后者,所以在數據解析時,將字典數據轉成dataframe格式。

入參:獲取到的數據;return值:無

運行以后,發現這樣的程序存在一些問題:就是這個for循環括起來的過多,導致寫數據庫時是一條條寫入而不是一整塊寫入,會影響程序效率,所以需要對程序進行如下修改:

def parse_data(req_jason): data_trunk = req_jason[’data’]# 獲取data鍵值下的列表 time_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #獲取當前時刻 for i in range(len(data_trunk)): data_unit = data_trunk[i] # 依次獲取列表下第i個元素即字典 del data_unit[’weather’] # 刪除該字典中不需要的一鍵多值的key和value,不刪除的話會影響后續的dataframe轉換,但是,如果該鍵值需要的話,需要采取其他處理方式 df = pd.DataFrame(data_trunk) # 將刪除鍵值后的整個列表套字典轉為datafrme list_need = [’timestamp_utc’, ’wind_dir’, ’precip’,’clouds_hi’] # 列出我們需要的列 df_need = df[list_need] # 保留df中需要的列 df_need.insert(0, ’update_time’, time_now) #表格中還需額外增加獲取數據的當前時間,并且需要放在dataframe的第一列

也就是從第7行之后跳出循環;

如果覺得for循環影響整體美觀,也可以用map代替,將代碼第4/5/6行改為如下代碼,不過性能上來說可能還是for循環更好,具體對比可看其他博主的測試,或者自己測試下運行時間。

map(data_trunk.pop, [’weather’])

3. 最后就是data_to_sql():

def data_to_sql(df): table = ’request_data_api’ engine = create_engine('mysql+pymysql://' + ’root’ + ':' + ’123’ + '@' + ’localhost’ + ':' + ’3306’ + '/' + ’test’ + '?charset=utf8') df.to_sql(name=table, con=engine, if_exists=’append’, index=False, index_label=False)

入參:dataframe類型數據。

當當當,正常部分已完成,就下來就需要想象各種異常以及處理對策。

第二輪,想象各種異常以及異常的記錄與處理對策。

1.讀取url后,獲取不到數據 → 休息幾秒,嘗試再次重連獲取

2.連接數據庫異常 → 數據庫可能關閉,嘗試重新ping,

3.寫入數據庫的內容為空 → 記錄異常,放棄入庫

第三輪,讓程序定時跑起來。

方法一:在代碼中采用apscheduler下的cron功能(trigger=’cron‘,類似linux下的crontab)實現定時運行(當然,apscheduler還有另一種trigger=‘interval’模式);

方法二:在linux下的crontab增加定時任務。

具體可以看別的帖子。

以上就是python 調用API接口 獲取和解析 Json數據的詳細內容,更多關于python 解析數據的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品成人a在线观看| 亚洲精品四区| 国产精品亚洲片在线播放| 99在线精品免费视频九九视 | 日韩精品视频在线看| 综合精品一区| 日本不卡视频在线| 久久国产乱子精品免费女| 久久国产免费看| 国产经典一区| yellow在线观看网址| 成人亚洲欧美| 成人羞羞视频在线看网址| 欧美午夜精品一区二区三区电影| 蜜桃成人av| 美国三级日本三级久久99| 欧美视频久久| 成人国产综合| 国产中文一区| 亚洲欧洲免费| 欧美激情福利| 日韩精品dvd| 国产精品视区| 18国产精品| 高清一区二区三区av| 日本欧美不卡| 午夜一级久久| 国产精品一区毛片| 日韩电影免费网站| 国产精品毛片在线看| 一区二区国产精品| 日本午夜免费一区二区 | 亚洲精品97| 日韩精品视频中文字幕| 麻豆精品蜜桃视频网站| 特黄特色欧美大片| 亚洲精品少妇| 日本一区二区免费高清| 国产午夜精品一区二区三区欧美 | 亚洲色图综合| 国产精品白丝一区二区三区| 97精品国产福利一区二区三区| 国产在线不卡| 91亚洲精品视频在线观看 | 国产精品成人一区二区网站软件| 日韩精品2区| 亚洲精品一二三**| 狠狠久久伊人| 国产日韩专区| 国产精品主播| 亚洲大全视频| 欧美精品91| 尤物网精品视频| 国产精品久久久久久模特| 91精品一区国产高清在线gif| 亚洲色图综合| 亚洲日本网址| 欧美日韩一区二区三区不卡视频 | 亚洲一二三区视频| 加勒比视频一区| 综合激情一区| 五月激情久久| 国产色噜噜噜91在线精品| 国产亚洲一区二区手机在线观看 | 成人在线免费观看91| 亚洲在线国产日韩欧美| 四季av一区二区凹凸精品| 久热re这里精品视频在线6| 韩国女主播一区二区三区| 亚洲精品看片| 91精品国产成人观看| 日韩三区四区| 国产一区二区中文| 久久69成人| 日日夜夜免费精品视频| 欧美日韩中文一区二区| 久久爱www.| 亚洲午夜久久| 狠狠干成人综合网| 国产精品毛片久久| 久久国产日韩欧美精品| 亚洲综合三区| 久久久精品日韩| 国产精成人品2018| 日韩综合小视频| 狠狠干综合网| 中文在线免费视频| 麻豆91精品视频| 日本精品另类| 中文视频一区| 亚洲免费精品| 99精品视频在线| 黄在线观看免费网站ktv| 国产精品一站二站| 日本一区二区中文字幕| 天堂va蜜桃一区二区三区| 偷拍精品精品一区二区三区| 精品久久久网| 久久久亚洲欧洲日产| 97精品久久| 日韩三级精品| 美女精品在线观看| 最新日韩av| 亚洲免费高清| 亚洲精品一区二区妖精| 久久一区二区三区电影| 日韩中文视频| 久久国产日本精品| av在线日韩| 成人免费电影网址| 久久久久99| 久久狠狠婷婷| 久久免费国产| 激情欧美亚洲| 欧美成人综合| 尹人成人综合网| 亚洲第一精品影视| 久久人人88| 九一成人免费视频| 欧美成人国产| 国产农村妇女精品一区二区| 影音先锋久久| 只有精品亚洲| 日韩中文一区二区| 日本午夜精品| 国产日产精品_国产精品毛片 | 亚洲综合丁香| 久久最新视频| 三级久久三级久久久| 欧美一级久久| 国产欧美日韩一区二区三区四区 | 久久激情网站| 偷拍欧美精品| 日韩中文字幕亚洲一区二区va在线| 美女网站一区| 久久亚洲视频| 日韩av网站免费在线| 国产三级一区| 久久久久久网| 亚洲性图久久| 一区二区日韩免费看| 欧美日一区二区在线观看| 麻豆精品蜜桃视频网站| 国产黄大片在线观看| 99国产精品一区二区| 午夜一级久久| 青青国产91久久久久久| 国产精品亚洲欧美一级在线| 成人一区不卡| 亚洲午夜久久久久久尤物| 美日韩精品视频| 欧美日韩一区二区国产| 久久伊人国产| 91精品精品| 亚洲伊人精品酒店| 免费亚洲婷婷| 亚洲香蕉网站| 日韩av中文在线观看| 精品国产乱码久久久| 精品一区毛片| 亚洲精品免费观看| 国产91在线播放精品| 亚洲欧洲一区| 国产精品亚洲片在线播放| 国产盗摄——sm在线视频| 不卡视频在线| 欧美精品影院| 国产综合色区在线观看| 视频一区二区欧美| 欧美国产另类| 亚洲欧洲午夜| 久久不卡日韩美女| 欧美成人国产| 国产欧美综合一区二区三区| 亚洲www免费| 亚洲毛片在线| 精品国产免费人成网站| 综合亚洲视频| 日韩精品dvd| 亚洲另类黄色| 欧美一区久久久| 美女网站久久| 欧美www视频在线观看| 日韩在线播放一区二区| 久久精品理论片| 日韩精品一区第一页| 国产一区2区| 日韩一区二区三区在线看| 秋霞影院一区二区三区| 久久精品超碰| 红桃视频亚洲| 国产不卡一区| 日韩精品久久久久久久软件91| 久久三级视频| 欧美日韩 国产精品| 午夜欧美在线| yellow在线观看网址| 日韩av字幕| 91久久在线| 亚洲免费福利|