【筆記】用Python呼叫API (三):完成剩下的呼叫API

更新於 2023/08/23閱讀時間約 11 分鐘
上一篇我們呼叫ACE的幣對價格API,並取出我們要值(USDT/TWD),此篇我們會繼續完成MAX跟BitoPro。

根據【筆記】用Python呼叫API (二):呼叫API,我們繼續處理MAX跟BitoPro的部分,先MAX

我們根據之前獲得的MAX API,透過同樣的方法觀察一下數據的結構:

import requests
import json

url = "https://max-api.maicoin.com/api/v2/tickers"
response = requests.get(url)

#如果程式狀態回應是200,​那回應將會解析成json格式的數據,存在變數data中
if response.status_code == 200:
data = response.json()
#json.dumps將程式作用的對象(像是 字典、列表)進行格式化輸出
formatted_data = json.dumps(data, indent=4)
print(formatted_data)

else:
print("壞了,根本就不能用啊,ERROR CODE:",response.status_code)


結果:

raw-image

根據響應的內容,我們可先取外層的"usdttwd"再取內層的價格,它提供的價格分買價、賣價、最高、最低以及最新,這裡取最新價"last"

import requests
import json

url = "https://max-api.maicoin.com/api/v2/tickers"
response = requests.get(url)

if response.status_code == 200:
data = response.json()
MAX_usdt_twd = data.get("usdttwd").get("last")
print(f"MAX 的USDT/TWD匯率: {MAX_usdt_twd}")
else:
print("壞了,根本就不能用啊,ERROR CODE:",response.status_code)

結果:

raw-image


另外

raw-image


如果確定程式是可以運行的,print(formatted_data)要寫在1跟2的位置都可以正常運行,寫在2是為了紀錄人類(?)直線的思路,但它們還是有點區別:

放在1代表著當響應狀態是200的才會印出來,非200就會執行else,像是我把MAX的請求網址刪一個字

raw-image

放在2代表無論如何都會印出來,只是當響應狀態(比如500)出現時,由於回傳的內容是None,就會出現錯誤,同樣跟1的情況,放在2的位置,得到的回應是

raw-image


MAX處理好了,接下來是BitoPro,一樣用同樣的方法先看結構:

import requests
import json

url = "https://api.bitopro.com/v3/tickers/usdt_twd"
response = requests.get(url)

if response.status_code == 200:
data = response.json()
formatted_data = json.dumps(data, indent=4, sort_keys=True)
print(formatted_data)

else:
print("壞了,根本就不能用啊,ERROR CODE::",response.status_code)

結果:

raw-image

根據響應的內容,我們需要先取"data",再取最新價格"lastPrice"

import requests
import json

url = "https://api.bitopro.com/v3/tickers/usdt_twd"
response = requests.get(url)

if response.status_code == 200:
data = response.json()
BitoPro_usdt_twd = data.get("data").get("lastPrice")
print(f"BitoPro 的USDT/TWD匯率: {BitoPro_usdt_twd}")
else:
print("壞了,根本就不能用啊,ERROR CODE::",response.status_code)

結果:

raw-image

BitoPro回傳的數據小數點有點多,MAX跟ACE都是三位,我們可以控制一下它小數點的長度

import requests
import json

url = "https://api.bitopro.com/v3/tickers/usdt_twd"
response = requests.get(url)

if response.status_code == 200:
data = response.json()
BitoPro_usdt_twd = data.get("data").get("lastPrice")
#定義 formatted_BitoPro,它是BitoPro_usdt_twd 被轉成浮點數後,格式化限制為小數點三位
formatted_BitoPro = "{:.3f}".format(float(BitoPro_usdt_twd))
print(f"BitoPro 的USDT/TWD匯率: {formatted_BitoPro}")
else:
print("壞了,根本就不能用啊,ERROR CODE::",response.status_code)

先用float讓BitoPro_usdt_twd變成浮點數,再透過format把小數點格式化為三位

結果:

raw-image

至此價格都抓到了,那就把它們拼起來吧,至於怎麼拼,共用的套件不用重複放,其他的依序放就可以了,之前透過Beautiful Soup 4抓的台銀匯率也放在一起

import requests
from bs4 import BeautifulSoup
from datetime import datetime

### ACE
url = "https://ace.io/polarisex/oapi/v2/list/tradePrice"
response = requests.get(url)

# 獲取當下時間
current_time = datetime.now()

# 格式化當下時間並印出
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
print(f"\n請求時間:{formatted_time}")

#如果程式狀態回應是200,​那回應將會解析成json格式的數據,存在變數data中
if response.status_code == 200:
data = response.json()
ACE_usdt_twd = data.get("USDT/TWD").get("last_price")

#變數字串化
print(f"ACE 的USDT/TWD匯率: {ACE_usdt_twd}")

else :
print("壞了,根本就不能用啊,ERROR CODE:",response.status_code)



### MAX
url = "https://max-api.maicoin.com/api/v2/tickers"
response = requests.get(url)

#如果程式狀態回應是200,​那回應將會解析成json格式的數據,存在變數data中
if response.status_code == 200:
data = response.json()
MAX_usdt_twd = data.get("usdttwd").get("last")

#變數字串化
print(f"MAX 的USDT/TWD匯率: {MAX_usdt_twd}")

else :
print("壞了,根本就不能用啊,ERROR CODE:",response.status_code)



### BitoPro
url = "https://api.bitopro.com/v3/tickers/usdt_twd"
response = requests.get(url)

if response.status_code == 200:
data = response.json()
BitoPro_usdt_twd = data.get("data").get("lastPrice")
#定義 formatted_BitoPro,它是BitoPro_usdt_twd 被轉成浮點數後,格式化限制為小數點三位
formatted_BitoPro = "{:.3f}".format(float(BitoPro_usdt_twd))

#變數字串化
print(f"BitoPro 的USDT/TWD匯率: {formatted_BitoPro}")
else:
print("壞了,根本就不能用啊,ERROR CODE::",response.status_code)



#台灣銀行牌告匯率網頁
url = "https://rate.bot.com.tw/xrt?Lang=zh-TW"
#定義一個變數為response,它是使用requests套件的get函式,對指定的url發起請求。
response = requests.get(url)
#將回應內容轉換為純文字
html_doc = response.text

# 使用BeautifulSoup解析HTML內容
soup = BeautifulSoup(html_doc, "html.parser")

# 找到該元素
element = soup.find("td", {"data-table": "本行即期賣出", "class": "rate-content-sight"})

# 提取出數字
number = element.text.strip()
print(f"台灣銀行 的USD/TWD匯率:{number}")

結果:

raw-image

都抓到了,這樣子的程式碼雖然是可以用,實際上不太好管理,比如想要修改某個網址,由於放在不同的地方,導致改起來很麻煩,下一篇會基於上方的內容把重複的地方模組化,讓程式碼好看一些,也便於管理。

avatar-img
21會員
18內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
冬霞的沙龍 的其他內容
呼叫API,並透過API響應的內容取到需要的值
透過數字貨幣交易所的OPEN API文件找到自己需要的資訊
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
呼叫API,並透過API響應的內容取到需要的值
透過數字貨幣交易所的OPEN API文件找到自己需要的資訊
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在Python的typing模組中,NewType用來創建新的類型,其實是一個現有類型的變體。這對於型別檢查(Type Checking)非常有用,能夠幫助我們更清楚地理解我們的代碼和預期的行為。
作者:林萃芬-諮商心理師 從書中解析腳色人格特質,探索天賦潛能,洞悉心理狀態,讓自己度過各種難關。書中能讓自我理解是屬於鬼滅裡的哪一種人格?如何更認識自己? 書摘重點整理以及心得整理: CH1 鬼滅重點主角群角色分析 >竈門炭治郎:源源不斷的正能量,同理每個人的處境 1. 無條件的
Thumbnail
開始使用子彈筆記10天,感受到效率大大提升! 子彈筆記很特別!讓我有效回顧過去,點燃熱情,更深入理解自己的心情起伏。這些都轉為超強的做事動力🤯。 以下是我用10天找回熱情,掌握實踐心得,成為自我管理的達人的3個最佳實踐: 最佳實踐1 - 從過去10天的記錄裡,熱情再燃:妳記得10天前熱衷什麼嗎?子
Thumbnail
身為一名教師,我需要專注在課程的設計,這裡包含學生需要知道的知識盤點,教師清不清楚自己到底要學生知道這些的目的是什麼,還有實際在課堂上教學的技術等等。學生的狀況越不好掌控,本質的掌握越重要,這可能就是我對《易經》中「以不變應萬變」的理解吧。
Thumbnail
使用ChatGPT生成的文字符號圖片分享 文字符號圖是以文字符號、數字、字母等字符組成的圖形藝術形式,可表達各種形狀和圖像。應用範圍廣泛,可手繪或使用計算機程序和人工智能技術生成。
Thumbnail
今天心理實務課程,老師用《說書人》讓我們去練習,如何使用「量尺問卷」、「目標問句」、「例外問句」、「假設問句」。 她請我們拿出兩張卡,第一張代表:自己目前做的好、值得慶祝得,第二張代表:自己還能進步的地方、想改善的地方,並將上述問句運用在第二張卡上,去看到出路。
Thumbnail
★不花錢、縮短時間、做好學習的唯一速效讀書法,就是自己一個人不斷地獨自學習!
《故事》麥奇說:好奇心是人類對于于“找到答案”和“認知閉合”的智力需求,如何運用好奇心呢? 一般人是圍繞著無數個問題,不斷橫向學習,期待一次學完所有相關知識,但在知識爆炸時代,無异是用勺子裝水,學不完的;牛人則是圍繞一個問題,尋找知行合一的閉環——向深處走,向事上練。
Thumbnail
「電子書」的確不怎麼像「書」,若要認真定位「電子書」,大概就是以編輯過的內容分章分節,用以「閱讀一本書」的思維去𢑥整出它應有的功能並提供「閱讀一本書」的體驗。說穿了,電子書就是很多個被排版在xhtml而連結起的檔案。
Thumbnail
營運力這門課講師 Evonne Tsai 跟大家分享如何用產品與系統思維,來思考你的職涯發展。這是關於她用兩年的人生學到到一堂課,在她還是中階的產品經理時的一個經歷。那時候她被公司要求打造出一個有關監控的新產品,而身為一個產品經理,她希望做出一個符合用戶需求、滿足用戶的體驗的產品,於是便找了保全人員
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在Python的typing模組中,NewType用來創建新的類型,其實是一個現有類型的變體。這對於型別檢查(Type Checking)非常有用,能夠幫助我們更清楚地理解我們的代碼和預期的行為。
作者:林萃芬-諮商心理師 從書中解析腳色人格特質,探索天賦潛能,洞悉心理狀態,讓自己度過各種難關。書中能讓自我理解是屬於鬼滅裡的哪一種人格?如何更認識自己? 書摘重點整理以及心得整理: CH1 鬼滅重點主角群角色分析 >竈門炭治郎:源源不斷的正能量,同理每個人的處境 1. 無條件的
Thumbnail
開始使用子彈筆記10天,感受到效率大大提升! 子彈筆記很特別!讓我有效回顧過去,點燃熱情,更深入理解自己的心情起伏。這些都轉為超強的做事動力🤯。 以下是我用10天找回熱情,掌握實踐心得,成為自我管理的達人的3個最佳實踐: 最佳實踐1 - 從過去10天的記錄裡,熱情再燃:妳記得10天前熱衷什麼嗎?子
Thumbnail
身為一名教師,我需要專注在課程的設計,這裡包含學生需要知道的知識盤點,教師清不清楚自己到底要學生知道這些的目的是什麼,還有實際在課堂上教學的技術等等。學生的狀況越不好掌控,本質的掌握越重要,這可能就是我對《易經》中「以不變應萬變」的理解吧。
Thumbnail
使用ChatGPT生成的文字符號圖片分享 文字符號圖是以文字符號、數字、字母等字符組成的圖形藝術形式,可表達各種形狀和圖像。應用範圍廣泛,可手繪或使用計算機程序和人工智能技術生成。
Thumbnail
今天心理實務課程,老師用《說書人》讓我們去練習,如何使用「量尺問卷」、「目標問句」、「例外問句」、「假設問句」。 她請我們拿出兩張卡,第一張代表:自己目前做的好、值得慶祝得,第二張代表:自己還能進步的地方、想改善的地方,並將上述問句運用在第二張卡上,去看到出路。
Thumbnail
★不花錢、縮短時間、做好學習的唯一速效讀書法,就是自己一個人不斷地獨自學習!
《故事》麥奇說:好奇心是人類對于于“找到答案”和“認知閉合”的智力需求,如何運用好奇心呢? 一般人是圍繞著無數個問題,不斷橫向學習,期待一次學完所有相關知識,但在知識爆炸時代,無异是用勺子裝水,學不完的;牛人則是圍繞一個問題,尋找知行合一的閉環——向深處走,向事上練。
Thumbnail
「電子書」的確不怎麼像「書」,若要認真定位「電子書」,大概就是以編輯過的內容分章分節,用以「閱讀一本書」的思維去𢑥整出它應有的功能並提供「閱讀一本書」的體驗。說穿了,電子書就是很多個被排版在xhtml而連結起的檔案。
Thumbnail
營運力這門課講師 Evonne Tsai 跟大家分享如何用產品與系統思維,來思考你的職涯發展。這是關於她用兩年的人生學到到一堂課,在她還是中階的產品經理時的一個經歷。那時候她被公司要求打造出一個有關監控的新產品,而身為一個產品經理,她希望做出一個符合用戶需求、滿足用戶的體驗的產品,於是便找了保全人員