首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CoinMarketCap导入数据

从CoinMarketCap导入数据
EN

Stack Overflow用户
提问于 2019-01-26 03:33:19
回答 1查看 1.3K关注 0票数 0

我正在遵循Youtube的一个教程,这个教程是从雅虎为标准普尔500指数导入数据,我正在尝试从coinmarketcap导入数据来跟踪加密货币数据。

我尝试使用Pandas DataReader从coinmarketcap获取数据,但遇到错误(未实现NotImplementedError: data_source='coinmarketcap‘)。

我不确定我的语法是否错误,或者我是否缺少一个模块,或者我使用的是不正确的data_source实现。

代码如下:

代码语言:javascript
复制
import coinmarketcap

import bs4 as bs
import datetime as dt
import os
import pandas_datareader as web
import pickle
import requests

def save_cmc_tickers():
    resp = requests.get('https://coinmarketcap.com')
    soup = bs.BeautifulSoup(resp.text, "lxml")
    table = soup.find('table', {'class': 'table floating-header'})
    #table1 = soup.find('table', {'class': 'no-wrap text-right'})
    tickers = []
    for row in table.findAll('tr')[1:]:
        ticker = row.findAll('a')[0].text
        price = row.findAll('a', {'class': 'price'})[0].text
        tickers.append(ticker)
        tickers.append(price)

    with open("cmctickers.pickle", "wb") as f:
        pickle.dump(tickers, f)

    print(tickers)

    return tickers

    #save_cmc_tickers()

    def get_data_from_cmc(reload_cmc100=False):

    if reload_cmc100:
        tickers = save_cmc_tickers()
    else:
        with open("cmctickers.pickle", "rb") as f:
            tickers = pickle.load(f)

    if not os.path.exists('stock_dfs'):
        os.makedirs('stock_dfs')

    start = dt.datetime(2010, 1, 1)
    end = dt.datetime(2017, 12, 31)

    for ticker in tickers:
        print(ticker)
        if not os.path.exists('stock_dfs/{}.csv'.format(ticker)):
            df = web.DataReader(ticker, 'coinmarketcap', start, end)
            df.to_csv('stock_dfs/{}.csv'.format(ticker))
        else:
            print("Already have {}".format(ticker))

get_data_from_cmc()

我之前也收到了一个"EOFError: Ran of input“错误,所以我不知道这是否与它有关,但它不再出现了。

任何信息都会有很大帮助。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-01-29 05:44:35

pandas_datareader不提供对CoinMarketCap的支持。这就是引发NotImplementedError的原因。

单独注意:可能没有必要从CoinMarketCap中获取您正在寻找的数据,因为CoinMarketCap有一个开发人员API (link),可以按如下方式访问(在obtaining an API key之后),尽管免费计划中只涵盖了某些端点。

代码语言:javascript
复制
# python 3
import requests

url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical"

params = {
    "time_start": "2017-01-01",
    "time_end": "2018-01-01",
    "interval": "1d"
}

headers = {
    "X-CMC_PRO_API_KEY": "<YOUR_API_KEY>"   
}

r = requests.get(url, params=params, headers=headers)
r.json()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54371748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档