簡體   English   中英

來自 CoinMarketCap API 和 Python 的歷史數據

[英]Historical data from CoinMarketCap API with Python

我正在嘗試將 Coinmarketcap API 與 python 一起使用,並且我有以下代碼:

import requests
import json
import pandas as pd

api_url= 'https://api.coinmarketcap.com/data-api/v3/cryptocurrency/historical?id=1&convertId=2781&interval=hourly&timeStart=1632441600&timeEnd=1637712000'
r = requests.get(api_url)
data = []
for item in r.json()['data']['quotes']:
    close = item['quote']['close']
    date=item['quote']['timestamp']
    data.append([date,close])


cols = ["date","close"]
df = pd.DataFrame(data, columns= cols)
df['date'] = pd.to_datetime(df['date'])

此代碼工作正常,但我無法獲取其他加密貨幣的數據。 我可以在請求中使用符號或 map 符號來標識嗎?

我找到了我的問題的解決方案:

def extraxt_coin_id(coin_symbol,coin_name):
    api_url= f'https://web-api.coinmarketcap.com/v1/cryptocurrency/map?symbol={coin_symbol}'
    r = requests.get(api_url)
    data = []
    for item in r.json()['data']:
        if item['name'].lower()==coin_name.lower():
            return item['id']
            break

所以我找到了硬幣的 ID,然后我替換了 url 中的 id:

def extract_history(coin_symbol,coin_name,from_date,to_date,interval):
    coin_id=extraxt_coin_id(coin_symbol,coin_name)
    
    from_date=int(datetime.datetime.strptime(from_date, "%Y-%m-%d").timestamp())
    to_date=int(datetime.datetime.strptime(to_date, "%Y-%m-%d").timestamp())

    api_url= f'https://api.coinmarketcap.com/data-api/v3/cryptocurrency/historical?id={coin_id}&convertId=2781&interval={interval}&timeStart={from_date}&timeEnd={to_date}'
    r = requests.get(api_url)
    data = []
    for item in r.json()['data']['quotes']:
        close = item['quote']['close']
        date=item['quote']['timestamp']
        data.append([date,close])

    cols = ["date","close"]
    hist_df = pd.DataFrame(data, columns= cols)
    hist_df['date'] = pd.to_datetime(hist_df['date'])
    hist_df["date"] = hist_df["date"].dt.floor('d')
    return hist_df

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM