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

更新於 發佈於 閱讀時間約 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
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
API(Application Programming Interface,應用程式介面)可以視為不同軟體系統之間的溝通橋梁,讓雙邊可以交換數據並執行各種功能。這篇會記錄產品經理一定要知道的幾個 API 概念,像是常見的錯誤代碼以及不同的 HTTP 方法(如 PUT、GET、POST)和實際案例說明
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利710元。
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利301元。
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利876元。
Thumbnail
你是不是在尋找 MAX 交易所最新的開戶優惠?那你來對地方了!因為數位小幫手這邊正在提供一組 MAX 推薦碼「3456924f」給讀者使用,註冊帳號的時候千萬別錯過啦 ~
Thumbnail
當我們在開發一個AI應用服務時, 常常會需要載入大模型, But… 我們總不可能每一次的請求就載入一次模型吧! 這樣太沒有效率了, 也非常的浪費資源, 因此我們通常會希望應用程式啟動時就能夠載入模型, 之後每一次的請求只要讓模型進行運算即可, 那麼在FastAPI的框架中究竟要如何使用呢? 首
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利491元。
Thumbnail
MAX推薦邀請碼可以幹嘛?註冊輸入「2dc6e390」 享60%手續費減免,真的爆省一波~ 實在太多人問《MAX交易所邀請碼》,這篇直接整理給你,不管你要找MAX推薦碼或MAX邀請碼,其實都是同一個意思啦!要是玩加密貨幣辦帳號沒用推薦碼,那可以說是白花了一堆錢,好比阿新我要介紹的這篇MAX交易所邀
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
API(Application Programming Interface,應用程式介面)可以視為不同軟體系統之間的溝通橋梁,讓雙邊可以交換數據並執行各種功能。這篇會記錄產品經理一定要知道的幾個 API 概念,像是常見的錯誤代碼以及不同的 HTTP 方法(如 PUT、GET、POST)和實際案例說明
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利710元。
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利301元。
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利876元。
Thumbnail
你是不是在尋找 MAX 交易所最新的開戶優惠?那你來對地方了!因為數位小幫手這邊正在提供一組 MAX 推薦碼「3456924f」給讀者使用,註冊帳號的時候千萬別錯過啦 ~
Thumbnail
當我們在開發一個AI應用服務時, 常常會需要載入大模型, But… 我們總不可能每一次的請求就載入一次模型吧! 這樣太沒有效率了, 也非常的浪費資源, 因此我們通常會希望應用程式啟動時就能夠載入模型, 之後每一次的請求只要讓模型進行運算即可, 那麼在FastAPI的框架中究竟要如何使用呢? 首
Thumbnail
展示「搬磚」交易紀錄與對帳單,真實呈現投資理財過程與成效─套利491元。
Thumbnail
MAX推薦邀請碼可以幹嘛?註冊輸入「2dc6e390」 享60%手續費減免,真的爆省一波~ 實在太多人問《MAX交易所邀請碼》,這篇直接整理給你,不管你要找MAX推薦碼或MAX邀請碼,其實都是同一個意思啦!要是玩加密貨幣辦帳號沒用推薦碼,那可以說是白花了一堆錢,好比阿新我要介紹的這篇MAX交易所邀
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!